aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Reisner <philipp.reisner@linbit.com>2011-11-30 23:25:36 +0100
committerPhilipp Reisner <philipp.reisner@linbit.com>2012-11-08 16:58:10 +0100
commitd10b4ea32bf2b77a3d56a20992cd549978df7b38 (patch)
tree2232db150857cd6d5d7f33967d8955475051e599
parentdrbd: add missing rcu locks around recently introduced idr_for_each (diff)
downloadlinux-dev-d10b4ea32bf2b77a3d56a20992cd549978df7b38.tar.xz
linux-dev-d10b4ea32bf2b77a3d56a20992cd549978df7b38.zip
drbd: Get rid of "ASSERTION FAILED: tconn->current_epoch->list not empty"
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
-rw-r--r--drivers/block/drbd/drbd_receiver.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 9c888e5b648f..e546dd3fab8a 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -4440,6 +4440,11 @@ static int drbd_disconnected(struct drbd_conf *mdev)
drbd_finish_peer_reqs(mdev);
+ /* This second workqueue flush is necessary, since drbd_finish_peer_reqs()
+ might have issued a work again. The one before drbd_finish_peer_reqs() is
+ necessary to reclain net_ee in drbd_finish_peer_reqs(). */
+ drbd_flush_workqueue(mdev);
+
kfree(mdev->p_uuid);
mdev->p_uuid = NULL;