path: root/drivers/block/drbd/drbd_nl.c
diff options
authorPhilipp Reisner <philipp.reisner@linbit.com>2011-11-10 12:12:52 +0100
committerPhilipp Reisner <philipp.reisner@linbit.com>2012-11-08 16:58:05 +0100
commit0cfac5dd904ec8b376beb27f6ad265b12d71bf9e (patch)
tree91f100e963ae038e7bc410eb0b4ba7beb61eae72 /drivers/block/drbd/drbd_nl.c
parent376694a0543f5da194d9c6e102cfcd023ffac949 (diff)
drbd: Fixes from the drbd-8.3 branch
* drbd-8.3: drbd: fix spurious meta data IO "error" drbd: Fixed a race condition between detach and start of resync drbd: fix harmless race to not trigger an ASSERT drbd: Derive sync-UUIDs only from the bitmap-uuid if it is non-zero drbd: Fixed current UUID generation (regression introduced recently, after 8.3.11) Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_nl.c')
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index 16c3710e1b9..c50c1753aa9 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -1666,7 +1666,9 @@ static int adm_detach(struct drbd_conf *mdev, int force)
drbd_suspend_io(mdev); /* so no-one is stuck in drbd_al_begin_io */
+ drbd_md_get_buffer(mdev); /* make sure there is no in-flight meta-data IO */
retcode = drbd_request_state(mdev, NS(disk, D_FAILED));
+ drbd_md_put_buffer(mdev);
/* D_FAILED will transition to DISKLESS. */
ret = wait_event_interruptible(mdev->misc_wait,
mdev->state.disk != D_FAILED);