linux/drivers/block/drbd
Philipp Reisner 1b6dd252e6 drbd: panic on delayed completion of aborted requests
"aborting" requests, or force-detaching the disk, is intended for
completely blocked/hung local backing devices which do no longer
complete requests at all, not even do error completions.  In this
situation, usually a hard-reset and failover is the only way out.

By "aborting", basically faking a local error-completion,
we allow for a more graceful swichover by cleanly migrating services.
Still the affected node has to be rebooted "soon".

By completing these requests, we allow the upper layers to re-use
the associated data pages.

If later the local backing device "recovers", and now DMAs some data
from disk into the original request pages, in the best case it will
just put random data into unused pages; but typically it will corrupt
meanwhile completely unrelated data, causing all sorts of damage.

Which means delayed successful completion,
especially for READ requests,
is a reason to panic().

We assume that a delayed *error* completion is OK,
though we still will complain noisily about it.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2012-11-09 14:11:39 +01:00
..
drbd_actlog.c drbd: announce FLUSH/FUA capability to upper layers 2012-11-09 14:05:44 +01:00
drbd_bitmap.c drbd: Write all pages of the bitmap after an online resize 2012-11-09 14:05:51 +01:00
drbd_int.h drbd: Call drbd_md_sync() explicitly after a state change on the connection 2012-11-09 14:11:08 +01:00
drbd_interval.c drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_interval.h drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_main.c drbd: Call drbd_md_sync() explicitly after a state change on the connection 2012-11-09 14:11:08 +01:00
drbd_nl.c drbd: Call drbd_md_sync() explicitly after a state change on the connection 2012-11-09 14:11:08 +01:00
drbd_nla.c drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00
drbd_nla.h drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00
drbd_proc.c drbd: introduce stop-sector to online verify 2012-11-09 14:05:32 +01:00
drbd_receiver.c drbd: Remove duplicate code 2012-11-09 14:11:38 +01:00
drbd_req.c drbd: differentiate early and later "postponing" of requests 2012-11-09 14:11:37 +01:00
drbd_req.h drbd: disambiguation, s/P_DISCARD_WRITE/P_SUPERSEDED/ 2012-11-09 14:05:49 +01:00
drbd_state.c drbd: Fix comparison of is_valid_transition()'s return code 2012-11-09 14:11:38 +01:00
drbd_state.h drbd: Improved logging of state changes 2012-11-08 16:45:06 +01:00
drbd_strings.c drbd: Allow volumes to become primary only on one side 2012-11-04 00:16:31 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: panic on delayed completion of aborted requests 2012-11-09 14:11:39 +01:00
drbd_wrappers.h drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00
Kconfig drbd: Kconfig fix 2009-12-29 17:38:28 +01:00
Makefile drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00