drbd: Fix comparison of is_valid_transition()'s return code
authorPhilipp Reisner <philipp.reisner@linbit.com>
Mon, 3 Sep 2012 13:39:01 +0000 (15:39 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Fri, 9 Nov 2012 13:11:38 +0000 (14:11 +0100)
commita3025a273700fc51dd561c7b2941f3c9db9be90a
treee4fc182421eb57b8863c3ba0aa4b6c2fa6e975ef
parent1393b59f8c46001c8dbd47078881483cf97813c3
drbd: Fix comparison of is_valid_transition()'s return code

is_valid_transition() might return SS_NOTHING_TO_DO.

The condition function _req_st_cond() returned SS_NOTHING_TO_DO, which
caused the wait_event to abort too early. Therefore drbd_req_state()
did not consume the next CL_ST_CHG_SUCCESS or SS_CW_FAILED_BY_PEER
causing serve disruption of the state machine logic...

Detaching from a single volue was one way to trigger this bug.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_state.c