linux-stable/drivers/block/drbd
Lars Ellenberg a574daf5d7 drbd: fix race between drbdadm invalidate/verify and finishing resync
When a resync or online verify is finished or aborted,
drbd does a bulk write-out of changed bitmap pages.

If *in that very moment* a new verify or resync is triggered,
this can race:
 ASSERT( !test_bit(BITMAP_IO, &mdev->flags) ) in drbd_main.c
 FIXME going to queue 'set_n_write from StartingSync' but 'write from resync_finished' still pending?
and similar.

This can be observed with e.g. tight invalidate loops in test scripts,
and probably has no real-life implication.

Still, that race can be solved by first quiescen the device,
before starting a new resync or verify.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2012-05-09 15:16:59 +02:00
..
Kconfig drbd: Kconfig fix 2009-12-29 17:38:28 +01:00
Makefile drbd: remove tracing bits 2009-10-01 21:17:58 +02:00
drbd_actlog.c drbd: missing wakeup after drbd_rs_del_all 2012-05-09 15:16:42 +02:00
drbd_bitmap.c drbd: Consider the disk-timeout also for meta-data IO operations 2012-05-09 15:16:30 +02:00
drbd_int.h drbd: fix resend/resubmit of frozen IO 2012-05-09 15:16:58 +02:00
drbd_main.c drbd: fix resend/resubmit of frozen IO 2012-05-09 15:16:58 +02:00
drbd_nl.c drbd: fix race between drbdadm invalidate/verify and finishing resync 2012-05-09 15:16:59 +02:00
drbd_proc.c drbd: cosmetic: fix accidental division instead of modulo when pretty printing 2012-05-09 10:01:39 +02:00
drbd_receiver.c drbd: Ensure that data_size is not 0 before using data_size-1 as index 2012-05-09 15:16:56 +02:00
drbd_req.c drbd: fix resend/resubmit of frozen IO 2012-05-09 15:16:58 +02:00
drbd_req.h drbd: Immediately allow completion of IOs, that wait for IO completions on a failed disk 2012-05-09 10:16:04 +02:00
drbd_strings.c drbd: Rename enum drbd_state_ret_codes to enum drbd_state_rv 2011-03-10 11:36:18 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: move put_ldev from __req_mod() to the endio callback 2012-05-09 15:16:51 +02:00
drbd_wrappers.h drbd: Get rid of unnecessary macros (2) 2011-03-10 11:36:15 +01:00