diff options
Diffstat (limited to 'drivers/block/drbd')
-rw-r--r-- | drivers/block/drbd/drbd_worker.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index f41e224caa7c..7f51f88b0a80 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c | |||
@@ -1653,7 +1653,9 @@ void drbd_start_resync(struct drbd_conf *mdev, enum drbd_conns side) | |||
1653 | clear_bit(B_RS_H_DONE, &mdev->flags); | 1653 | clear_bit(B_RS_H_DONE, &mdev->flags); |
1654 | 1654 | ||
1655 | write_lock_irq(&global_state_lock); | 1655 | write_lock_irq(&global_state_lock); |
1656 | if (!get_ldev_if_state(mdev, D_NEGOTIATING)) { | 1656 | /* Did some connection breakage or IO error race with us? */ |
1657 | if (mdev->state.conn < C_CONNECTED | ||
1658 | || !get_ldev_if_state(mdev, D_NEGOTIATING)) { | ||
1657 | write_unlock_irq(&global_state_lock); | 1659 | write_unlock_irq(&global_state_lock); |
1658 | mutex_unlock(mdev->state_mutex); | 1660 | mutex_unlock(mdev->state_mutex); |
1659 | return; | 1661 | return; |