diff options
Diffstat (limited to 'drivers/block/drbd')
-rw-r--r-- | drivers/block/drbd/drbd_main.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index bbe3bff2cad6..8bfedc7164fa 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c | |||
@@ -3763,6 +3763,9 @@ static int w_go_diskless(struct drbd_conf *mdev, struct drbd_work *w, int unused | |||
3763 | * the protected members anymore, though, so in the after_state_ch work | 3763 | * the protected members anymore, though, so in the after_state_ch work |
3764 | * it will be safe to free them. */ | 3764 | * it will be safe to free them. */ |
3765 | drbd_force_state(mdev, NS(disk, D_DISKLESS)); | 3765 | drbd_force_state(mdev, NS(disk, D_DISKLESS)); |
3766 | /* We need to wait for return of references checked out while we still | ||
3767 | * have been D_FAILED, though (drbd_md_sync, bitmap io). */ | ||
3768 | wait_event(mdev->misc_wait, !atomic_read(&mdev->local_cnt)); | ||
3766 | 3769 | ||
3767 | clear_bit(GO_DISKLESS, &mdev->flags); | 3770 | clear_bit(GO_DISKLESS, &mdev->flags); |
3768 | return 1; | 3771 | return 1; |