drbd: move comment about stopping the receiver thread to where it belongs
authorLars Ellenberg <lars.ellenberg@linbit.com>
Sun, 24 Apr 2011 18:52:20 +0000 (20:52 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 8 Nov 2012 15:49:05 +0000 (16:49 +0100)
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 <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_worker.c

index 2c43cf0918c41e633634c0b3018b1744f6c30abb..9d1ba8ea68186304bfaf1bf7c5197970867fd72a 100644 (file)
@@ -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);