This patch looks like it should be in the 3.9-stable tree, should we apply
it?
------------------
From: "Philipp Reisner <[email protected]>"
commit 7c689e63a847316c1b2500f86891b0a574ce7e69 upstream
With an automatic after split-brain recovery policy of
"after-sb-1pri call-pri-lost-after-sb",
when trying to drbd_set_role() to R_SECONDARY,
we run into a deadlock.
This was first recognized and supposedly fixed by
2009-06-10 "Fixed a deadlock when using automatic split brain recovery when
both nodes are"
replacing drbd_set_role() with drbd_change_state() in that code-path,
but the first hunk of that patch forgets to remove the drbd_set_role().
We apparently only ever tested the "two primaries" case.
Cc: <[email protected]> # 3.9.x: ef57f9e6: drbd: Fix build error
Signed-off-by: Philipp Reisner <[email protected]>
Signed-off-by: Lars Ellenberg <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Signed-off-by: Jonghwan Choi <[email protected]>
---
drivers/block/drbd/drbd_receiver.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/block/drbd/drbd_receiver.c
b/drivers/block/drbd/drbd_receiver.c
index a9eccfc..5105f43 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -2661,7 +2661,6 @@ static int drbd_asb_recover_1p(struct drbd_conf *mdev)
__must_hold(local)
if (hg == -1 && mdev->state.role == R_PRIMARY) {
enum drbd_state_rv rv2;
- drbd_set_role(mdev, R_SECONDARY, 0);
/* drbd_change_state() does not sleep while in
SS_IN_TRANSIENT_STATE,
* we might be here in C_WF_REPORT_PARAMS which is
transient.
* we do not need to wait for the after state
change work either. */
--
1.7.9.5
Yes, please.
> This patch looks like it should be in the 3.9-stable tree, should we apply
> it?
>
> ------------------
>
> From: "Philipp Reisner <[email protected]>"
>
> commit 7c689e63a847316c1b2500f86891b0a574ce7e69 upstream
>
> With an automatic after split-brain recovery policy of
> "after-sb-1pri call-pri-lost-after-sb",
> when trying to drbd_set_role() to R_SECONDARY,
> we run into a deadlock.
>
> This was first recognized and supposedly fixed by
> 2009-06-10 "Fixed a deadlock when using automatic split brain recovery when
> both nodes are"
> replacing drbd_set_role() with drbd_change_state() in that code-path,
> but the first hunk of that patch forgets to remove the drbd_set_role().
>
> We apparently only ever tested the "two primaries" case.
>
> Cc: <[email protected]> # 3.9.x: ef57f9e6: drbd: Fix build error
> Signed-off-by: Philipp Reisner <[email protected]>
> Signed-off-by: Lars Ellenberg <[email protected]>
> Signed-off-by: Jens Axboe <[email protected]>
> Signed-off-by: Jonghwan Choi <[email protected]>
> ---
> drivers/block/drbd/drbd_receiver.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/block/drbd/drbd_receiver.c
> b/drivers/block/drbd/drbd_receiver.c
> index a9eccfc..5105f43 100644
> --- a/drivers/block/drbd/drbd_receiver.c
> +++ b/drivers/block/drbd/drbd_receiver.c
> @@ -2661,7 +2661,6 @@ static int drbd_asb_recover_1p(struct drbd_conf *mdev)
> __must_hold(local)
> if (hg == -1 && mdev->state.role == R_PRIMARY) {
> enum drbd_state_rv rv2;
>
> - drbd_set_role(mdev, R_SECONDARY, 0);
> /* drbd_change_state() does not sleep while in
> SS_IN_TRANSIENT_STATE,
> * we might be here in C_WF_REPORT_PARAMS which is
> transient.
> * we do not need to wait for the after state
> change work either. */
On Thu, May 09, 2013 at 08:14:47AM +0900, Jonghwan Choi wrote:
> This patch looks like it should be in the 3.9-stable tree, should we apply
> it?
This seems to be applicable to older kernels as well (starting with
3.0 at least).
I'm queuing it for 3.5.
Cheers,
--
Luis
>
> ------------------
>
> From: "Philipp Reisner <[email protected]>"
>
> commit 7c689e63a847316c1b2500f86891b0a574ce7e69 upstream
>
> With an automatic after split-brain recovery policy of
> "after-sb-1pri call-pri-lost-after-sb",
> when trying to drbd_set_role() to R_SECONDARY,
> we run into a deadlock.
>
> This was first recognized and supposedly fixed by
> 2009-06-10 "Fixed a deadlock when using automatic split brain recovery when
> both nodes are"
> replacing drbd_set_role() with drbd_change_state() in that code-path,
> but the first hunk of that patch forgets to remove the drbd_set_role().
>
> We apparently only ever tested the "two primaries" case.
>
> Cc: <[email protected]> # 3.9.x: ef57f9e6: drbd: Fix build error
> Signed-off-by: Philipp Reisner <[email protected]>
> Signed-off-by: Lars Ellenberg <[email protected]>
> Signed-off-by: Jens Axboe <[email protected]>
> Signed-off-by: Jonghwan Choi <[email protected]>
> ---
> drivers/block/drbd/drbd_receiver.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/block/drbd/drbd_receiver.c
> b/drivers/block/drbd/drbd_receiver.c
> index a9eccfc..5105f43 100644
> --- a/drivers/block/drbd/drbd_receiver.c
> +++ b/drivers/block/drbd/drbd_receiver.c
> @@ -2661,7 +2661,6 @@ static int drbd_asb_recover_1p(struct drbd_conf *mdev)
> __must_hold(local)
> if (hg == -1 && mdev->state.role == R_PRIMARY) {
> enum drbd_state_rv rv2;
>
> - drbd_set_role(mdev, R_SECONDARY, 0);
> /* drbd_change_state() does not sleep while in
> SS_IN_TRANSIENT_STATE,
> * we might be here in C_WF_REPORT_PARAMS which is
> transient.
> * we do not need to wait for the after state
> change work either. */
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, May 14, 2013 at 01:56:55PM +0100, Luis Henriques wrote:
> On Thu, May 09, 2013 at 08:14:47AM +0900, Jonghwan Choi wrote:
> > This patch looks like it should be in the 3.9-stable tree, should we apply
> > it?
>
> This seems to be applicable to older kernels as well (starting with
> 3.0 at least).
Ack.
> I'm queuing it for 3.5.
>
> Cheers,
> --
> Luis
>
> >
> > ------------------
> >
> > From: "Philipp Reisner <[email protected]>"
> >
> > commit 7c689e63a847316c1b2500f86891b0a574ce7e69 upstream
> >
> > With an automatic after split-brain recovery policy of
> > "after-sb-1pri call-pri-lost-after-sb",
> > when trying to drbd_set_role() to R_SECONDARY,
> > we run into a deadlock.
> >
> > This was first recognized and supposedly fixed by
> > 2009-06-10 "Fixed a deadlock when using automatic split brain recovery when
> > both nodes are"
> > replacing drbd_set_role() with drbd_change_state() in that code-path,
> > but the first hunk of that patch forgets to remove the drbd_set_role().
> >
> > We apparently only ever tested the "two primaries" case.
> >
> > Cc: <[email protected]> # 3.9.x: ef57f9e6: drbd: Fix build error
> > Signed-off-by: Philipp Reisner <[email protected]>
> > Signed-off-by: Lars Ellenberg <[email protected]>
> > Signed-off-by: Jens Axboe <[email protected]>
> > Signed-off-by: Jonghwan Choi <[email protected]>
> > ---
> > drivers/block/drbd/drbd_receiver.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/drivers/block/drbd/drbd_receiver.c
> > b/drivers/block/drbd/drbd_receiver.c
> > index a9eccfc..5105f43 100644
> > --- a/drivers/block/drbd/drbd_receiver.c
> > +++ b/drivers/block/drbd/drbd_receiver.c
> > @@ -2661,7 +2661,6 @@ static int drbd_asb_recover_1p(struct drbd_conf *mdev)
> > __must_hold(local)
> > if (hg == -1 && mdev->state.role == R_PRIMARY) {
> > enum drbd_state_rv rv2;
> >
> > - drbd_set_role(mdev, R_SECONDARY, 0);
> > /* drbd_change_state() does not sleep while in
> > SS_IN_TRANSIENT_STATE,
> > * we might be here in C_WF_REPORT_PARAMS which is
> > transient.
> > * we do not need to wait for the after state
> > change work either. */
On Tue, 2013-05-14 at 15:25 +0200, 'Lars Ellenberg' wrote:
> On Tue, May 14, 2013 at 01:56:55PM +0100, Luis Henriques wrote:
> > On Thu, May 09, 2013 at 08:14:47AM +0900, Jonghwan Choi wrote:
> > > This patch looks like it should be in the 3.9-stable tree, should we apply
> > > it?
> >
> > This seems to be applicable to older kernels as well (starting with
> > 3.0 at least).
>
> Ack.
[...]
Queued up for 3.2. Thanks all.
Ben.
--
Ben Hutchings
If at first you don't succeed, you're doing about average.