drbd: Make sure we do not send state updates during an empty resync [Bugz 271]
This is a race condition that existed for ages. The previous commit reduces the window, this one closes it. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
309d1608cc
commit
d0c3f60f36
@ -1380,7 +1380,6 @@ void drbd_start_resync(struct drbd_conf *mdev, enum drbd_conns side)
|
||||
_drbd_pause_after(mdev);
|
||||
}
|
||||
write_unlock_irq(&global_state_lock);
|
||||
drbd_state_unlock(mdev);
|
||||
put_ldev(mdev);
|
||||
|
||||
if (r == SS_SUCCESS) {
|
||||
@ -1393,7 +1392,6 @@ void drbd_start_resync(struct drbd_conf *mdev, enum drbd_conns side)
|
||||
/* Peer still reachable? Beware of failing before-resync-target handlers! */
|
||||
ping_peer(mdev);
|
||||
drbd_resync_finished(mdev);
|
||||
return;
|
||||
}
|
||||
|
||||
/* ns.conn may already be != mdev->state.conn,
|
||||
@ -1405,6 +1403,7 @@ void drbd_start_resync(struct drbd_conf *mdev, enum drbd_conns side)
|
||||
|
||||
drbd_md_sync(mdev);
|
||||
}
|
||||
drbd_state_unlock(mdev);
|
||||
}
|
||||
|
||||
int drbd_worker(struct drbd_thread *thi)
|
||||
|
Loading…
Reference in New Issue
Block a user