linux-hardened/drivers/block/drbd
Lars Ellenberg 7ee1fb93f3 drbd: flush drbd work queue before invalidate/invalidate remote
If you do back to back wait-sync/invalidate on a Primary in a tight loop,
during application IO load, you could trigger a race:
  kernel: block drbd6: FIXME going to queue 'set_n_write from StartingSync'
	but 'write from resync_finished' still pending?

Fix this by changing the order of the drbd_queue_work() and
the wake_up() in dec_ap_pending(), and adding the additional
drbd_flush_workqueue() before requesting the full sync.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2012-07-24 14:15:58 +02:00
..
drbd_actlog.c drbd: differentiate between normal and forced detach 2012-07-24 14:06:18 +02:00
drbd_bitmap.c drbd: differentiate between normal and forced detach 2012-07-24 14:06:18 +02:00
drbd_int.h drbd: flush drbd work queue before invalidate/invalidate remote 2012-07-24 14:15:58 +02:00
drbd_main.c drbd: call local-io-error handler early 2012-07-24 14:10:41 +02:00
drbd_nl.c drbd: flush drbd work queue before invalidate/invalidate remote 2012-07-24 14:15:58 +02:00
drbd_proc.c drbd: reset congestion information before reporting it in /proc/drbd 2012-07-24 14:07:48 +02:00
drbd_receiver.c drbd: fix potential access after free 2012-07-24 14:15:16 +02:00
drbd_req.c drbd: differentiate between normal and forced detach 2012-07-24 14:06:18 +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: do not reset rs_pending_cnt too early 2012-07-24 14:09:53 +02:00
drbd_wrappers.h drbd: Get rid of unnecessary macros (2) 2011-03-10 11:36:15 +01: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