linux/drivers/block/drbd
Lars Ellenberg 0e49d7b014 drbd: fix potential distributed deadlock during verify or resync
If max-buffers and socket buffer sizes are "too small" for the chosen
resync rate, this could lead potentially lead to a distributed deadlock,
which may or may not resolve itself via the "ko-count" and request
timeout mechanism, or could be resolved by forced disconnect.

One option to deal with this is proper configuration:
use larger max-buffer and socket buffers settings,
or reduce the resync rate.

But even with bad configuration we should not deadlock,
but "gracefully" recover.

The issue is avoided by using only up to max-buffers/2 for resync
requests, and by using max-buffers not as a hard limit for data buffer
allocations, but as a throttle threshold only.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2014-04-30 13:46:54 -06:00
..
drbd_actlog.c drbd: Remove drbd_wrappers.h 2014-04-30 13:46:54 -06:00
drbd_bitmap.c drbd: Kill drbd_task_to_thread_name() 2014-02-17 16:50:35 +01:00
drbd_int.h drbd: Remove drbd_wrappers.h 2014-04-30 13:46:54 -06:00
drbd_interval.c Merge branch 'drbd-8.4_ed6' into for-3.8-drivers-drbd-8.4_ed6 2012-11-09 14:20:23 +01: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: Add drbd_thread->resource and make drbd_thread->connection optional 2014-02-17 16:50:48 +01:00
drbd_nl.c drbd: Allow online layout change of AL while peer is not connected 2014-04-30 13:46:54 -06:00
drbd_nla.c drbd: Remove drbd_wrappers.h 2014-04-30 13:46:54 -06: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: fix stalled resync detection in /proc/drbd 2014-04-30 13:46:54 -06:00
drbd_protocol.h drbd: Split off on-the-wire protocol definitions 2014-02-17 16:27:49 +01:00
drbd_receiver.c drbd: fix potential distributed deadlock during verify or resync 2014-04-30 13:46:54 -06:00
drbd_req.c drbd: Create a dedicated struct drbd_device_work 2014-02-17 16:50:39 +01:00
drbd_req.h drbd: Remove drbd_wrappers.h 2014-04-30 13:46:54 -06:00
drbd_state.c drbd: Leave IO suspended if the fence handler find the peer primary 2014-04-30 13:46:54 -06:00
drbd_state.h drbd: Rename drbd_tconn -> drbd_connection 2014-02-17 16:44:47 +01:00
drbd_strings.c drbd: Move string function prototypes from linux/drbd.h to drbd_string.h 2014-02-17 16:50:37 +01:00
drbd_strings.h drbd: Move string function prototypes from linux/drbd.h to drbd_string.h 2014-02-17 16:50:37 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: fix potential distributed deadlock during verify or resync 2014-04-30 13:46:54 -06:00
Kconfig drbd: update Kconfig to match current dependencies 2012-12-06 13:08:29 +01:00
Makefile drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00