linux/drivers/block/drbd
Lars Ellenberg f3dfa40a67 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>
2012-11-08 16:53:00 +01:00
..
drbd_actlog.c drbd: fix copy/paste error in comment 2012-11-08 16:52:57 +01:00
drbd_bitmap.c drbd: introduce a bio_set to allocate housekeeping bios from 2011-10-14 16:48:06 +02:00
drbd_int.h drbd: Introduce a "lockless" variant of drbd_send_protocoll() 2012-11-08 16:52:59 +01:00
drbd_interval.c drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_interval.h drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_main.c drbd: Allow to change data-integrity-alg on the fly 2012-11-08 16:52:59 +01:00
drbd_nl.c drbd: fix race when forcefully disconnecting 2012-11-08 16:53:00 +01:00
drbd_proc.c drbd: rcu_read_lock() and rcu_dereference() for tconn->net_conf 2012-11-08 16:48:59 +01:00
drbd_receiver.c drbd: fix race when forcefully disconnecting 2012-11-08 16:53:00 +01:00
drbd_req.c drbd: rcu_read_lock() and rcu_dereference() for tconn->net_conf 2012-11-08 16:48:59 +01:00
drbd_req.h drbd: Runtime changeable wire protocol 2012-11-08 16:45:18 +01:00
drbd_state.c drbd: fix race when forcefully disconnecting 2012-11-08 16:53:00 +01:00
drbd_state.h drbd: Improved logging of state changes 2012-11-08 16:45:06 +01:00
drbd_strings.c drbd: Allow volumes to become primary only on one side 2012-11-04 00:16:31 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: Removed the OBJECT_DYING and the CONFIG_PENDING bits 2012-11-08 16:49:07 +01:00
drbd_wrappers.h drbd: Remove obsolete drbd_crypto_is_hash() 2012-11-08 16:52:58 +01:00
Kconfig drbd: Kconfig fix 2009-12-29 17:38:28 +01:00
Makefile drbd: Moved the state functions into its own source file 2011-09-28 10:26:43 +02:00