summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_main.c
diff options
context:
space:
mode:
authorLars Ellenberg2011-05-02 10:45:05 +0200
committerPhilipp Reisner2012-11-08 16:53:00 +0100
commitf3dfa40a67c354a5886c5ae53a9c5d3a2c6fd06e (patch)
treee85ab6fe143681814b395ed5ece180df8d090201 /drivers/block/drbd/drbd_main.c
parentdrbd: Allow to change data-integrity-alg on the fly (diff)
downloadkernel-qcow2-linux-f3dfa40a67c354a5886c5ae53a9c5d3a2c6fd06e.tar.gz
kernel-qcow2-linux-f3dfa40a67c354a5886c5ae53a9c5d3a2c6fd06e.tar.xz
kernel-qcow2-linux-f3dfa40a67c354a5886c5ae53a9c5d3a2c6fd06e.zip
drbd: fix race when forcefully disconnecting
If a forced disconnect hits a restarting receiver right after it passed its final "if (C_DISCONNECTING)" test in drbdd_init(), but before it was actually restarted by drbd_thread_setup, we could be left with a connection stuck in C_DISCONNECTING, never reaching C_STANDALONE, which would be necessary to take it down or reconfigure it. Move the last cleanup into w_after_conn_state_ch(), and do an additional state change request in conn_try_disconnect(), just in case. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_main.c')
0 files changed, 0 insertions, 0 deletions