diff options
author | Philipp Reisner | 2012-11-08 15:04:36 +0100 |
---|---|---|
committer | Philipp Reisner | 2012-11-08 16:57:59 +0100 |
commit | 823bd832a60dcf4bf9c162112f34f2f1783d0eaa (patch) | |
tree | 6bc4707730dda8f597079008fdcc29209fcd0bd8 /drivers/block/drbd/drbd_req.h | |
parent | drbd: Fix the data-integrity-alg setting (diff) | |
download | kernel-qcow2-linux-823bd832a60dcf4bf9c162112f34f2f1783d0eaa.tar.gz kernel-qcow2-linux-823bd832a60dcf4bf9c162112f34f2f1783d0eaa.tar.xz kernel-qcow2-linux-823bd832a60dcf4bf9c162112f34f2f1783d0eaa.zip |
drbd: Bugfix for the connection behavior
If we get into the C_BROKEN_PIPE cstate once, the state engine set the
thi->t_state of the receiver thread to restarting. But with the while loop
in drbdd_init() a new connection gets established. After the call into
drbdd() returns immediately since the thi->t_state is not RUNNING. The
restart of drbd_init() then resets thi->t_state to RUNNING.
I.e. after entering C_BROKEN_PIPE once, the next successful established
connection gets wasted.
The two parts of the fix:
* Do not cause the thread to restart if we detect the issue
with the sockets while we are in C_WF_CONNECTION.
* Make sure that all actions that would have set us to C_BROKEN_PIPE
happen before the state change to C_WF_REPORT_PARAMS.
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_req.h')
0 files changed, 0 insertions, 0 deletions