drbd: Fixed a race condition between detach and start of resync
authorPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 6 Oct 2011 16:29:14 +0000 (18:29 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Wed, 9 May 2012 13:15:53 +0000 (15:15 +0200)
commitaaae506d545bb9d06f4d8362f670f406f12e4b58
tree4fb88894b2ce6e03ea44d188752170ef7b719260
parent6a9a92f4ef05bb3e94bbfe123c21482fa5da9866
drbd: Fixed a race condition between detach and start of resync

drbd_state_lock() is only there to serialize cluster wide state
changes. Testing the local disk state needs to happen while
holding the global_state_lock.

Otherwise you might see something like this (Oct 6 on kugel)
14:20:24 drbd0: conn( WFSyncUUID -> Connected ) disk( Inconsistent -> Failed )
14:20:24 drbd0: helper command: /sbin/drbdadm before-resync-target minor-0 exit code 0 (0x0)
14:20:24 drbd0: conn( Connected -> SyncTarget ) disk( Failed -> Inconsistent )

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