From f5e2b8b3b6bed8c60103b4ed5341af072129d7c0 Mon Sep 17 00:00:00 2001 From: Lars Ellenberg Date: Sun, 24 Apr 2011 20:52:20 +0200 Subject: [PATCH] drbd: move comment about stopping the receiver thread to where it belongs When the last volume of a replication group is unconfigured, the worker thread exits. To not interfere with cleanup of other threads, before the the last cleanups run, we need to make sure the receiver has already exited. The commend explaining that clearly belongs above drbd_thread_stop(&tconn->receiver), not in the cleanup loop below. Signed-off-by: Philipp Reisner Signed-off-by: Lars Ellenberg --- drivers/block/drbd/drbd_worker.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index 2c43cf0..9d1ba8e 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c @@ -1744,12 +1744,13 @@ int drbd_worker(struct drbd_thread *thi) */ spin_unlock_irq(&tconn->data.work.q_lock); + /* _drbd_set_state only uses stop_nowait. + * wait here for the exiting receiver. */ drbd_thread_stop(&tconn->receiver); + down_read(&drbd_cfg_rwsem); idr_for_each_entry(&tconn->volumes, mdev, vnr) { D_ASSERT(mdev->state.disk == D_DISKLESS && mdev->state.conn == C_STANDALONE); - /* _drbd_set_state only uses stop_nowait. - * wait here for the exiting receiver. */ drbd_mdev_cleanup(mdev); } up_read(&drbd_cfg_rwsem); -- 2.7.4