Commit 26ea8f92 authored by Andreas Gruenbacher's avatar Andreas Gruenbacher Committed by Jens Axboe

drbd: Do not sleep inside rcu

Signed-off-by: default avatarAndreas Gruenbacher <agruen@linbit.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent f35546e0
...@@ -1039,6 +1039,8 @@ static int conn_connect(struct drbd_tconn *tconn) ...@@ -1039,6 +1039,8 @@ static int conn_connect(struct drbd_tconn *tconn)
rcu_read_lock(); rcu_read_lock();
idr_for_each_entry(&tconn->volumes, mdev, vnr) { idr_for_each_entry(&tconn->volumes, mdev, vnr) {
kref_get(&mdev->kref); kref_get(&mdev->kref);
rcu_read_unlock();
/* Prevent a race between resync-handshake and /* Prevent a race between resync-handshake and
* being promoted to Primary. * being promoted to Primary.
* *
...@@ -1049,8 +1051,6 @@ static int conn_connect(struct drbd_tconn *tconn) ...@@ -1049,8 +1051,6 @@ static int conn_connect(struct drbd_tconn *tconn)
mutex_lock(mdev->state_mutex); mutex_lock(mdev->state_mutex);
mutex_unlock(mdev->state_mutex); mutex_unlock(mdev->state_mutex);
rcu_read_unlock();
if (discard_my_data) if (discard_my_data)
set_bit(DISCARD_MY_DATA, &mdev->flags); set_bit(DISCARD_MY_DATA, &mdev->flags);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment