linux/drivers/block
Lars Ellenberg f708bd08ec drbd: do not block when adjusting "disk-options" while IO is frozen
"suspending" IO is overloaded.
It can mean "do not allow new requests" (obviously),
but it also may mean "must not complete pending IO",
for example while the fencing handlers do their arbitration.

When adjusting disk options, we suspend io (disallow new requests), then
wait for the activity-log to become unused (drain all IO completions),
and possibly replace it with a new activity log of different size.

If the other "suspend IO" aspect is active, pending IO completions won't
happen, and we would block forever (unkillable drbdsetup process).

Fix this by skipping the activity log adjustment if the "al-extents"
setting did not change. Also, in case it did change, fail early without
blocking if it looks like we would block forever.

Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-12-20 09:51:30 -07:00
..
aoe aoe: add __exit annotation 2018-12-16 09:01:38 -07:00
drbd drbd: do not block when adjusting "disk-options" while IO is frozen 2018-12-20 09:51:30 -07:00
mtip32xx mtip32xx: use BLK_STS_DEV_RESOURCE for device resources 2018-12-10 14:45:19 -07:00
paride pd: replace ->special use with private data in the request 2018-11-10 08:03:50 -07:00
rsxx pci-v4.20-changes 2018-10-25 06:50:48 -07:00
xen-blkback xen/blkback: remove unused pers_gnts_lock from struct xen_blkif_ring 2018-08-27 12:12:04 -04:00
zram drivers/block: remove redundant 'default n' from Kconfig-s 2018-10-10 14:11:08 -06:00
amiflop.c amiflop: convert to blk-mq 2018-10-16 09:49:52 -06:00
ataflop.c ataflop: implement mq_ops->commit_rqs() hook 2018-11-29 10:12:27 -07:00
brd.c block: brd: associate with queue until adding disk 2018-11-01 19:59:51 -06:00
cryptoloop.c block: cryptoloop: Remove VLA usage of skcipher 2018-09-28 12:46:07 +08:00
floppy.c Linux 4.20-rc3 2018-11-18 15:46:03 -07:00
Kconfig drivers/block: Remove DAC960 driver 2018-10-17 09:42:30 -06:00
loop.c block: loop: check error using IS_ERR instead of IS_ERR_OR_NULL in loop_add() 2018-12-16 09:01:38 -07:00
loop.h block/loop: Use global lock for ioctl() operation. 2018-11-08 06:30:11 -07:00
Makefile drivers/block: Remove DAC960 driver 2018-10-17 09:42:30 -06:00
nbd.c blk-mq-tag: change busy_iter_fn to return whether to continue or not 2018-11-08 10:24:07 -07:00
null_blk_main.c block: remove the lock argument to blk_alloc_queue_node 2018-11-15 12:13:35 -07:00
null_blk_zoned.c null_blk: Add conventional zone configuration for zoned support 2018-11-07 13:41:50 -07:00
null_blk.h null_blk: Add conventional zone configuration for zoned support 2018-11-07 13:41:50 -07:00
pktcdvd.c pktcdvd: remove queue_lock around blk_queue_max_hw_sectors 2018-11-16 09:16:59 -07:00
ps3disk.c ps3disk: convert to blk-mq 2018-10-15 20:07:56 -06:00
ps3vram.c block: genhd: add 'groups' argument to device_add_disk 2018-09-28 08:30:28 -06:00
rbd_types.h rbd: RBD_V{1,2}_DATA_FORMAT macros 2017-02-20 12:16:15 +01:00
rbd.c libceph, rbd, ceph: move ceph_osdc_alloc_messages() calls 2018-10-22 10:28:22 +02:00
skd_main.c skd_main: don't use req->special 2018-11-10 08:03:47 -07:00
skd_s1120.h skd: Use __packed only when needed 2017-08-18 08:45:29 -06:00
sunvdc.c sunvdc: Do not spin in an infinite loop when vio_ldc_send() returns EAGAIN 2018-11-28 06:23:12 -07:00
swim3.c swim3: convert to blk-mq 2018-10-16 09:49:36 -06:00
swim_asm.S
swim.c swim: convert to blk-mq 2018-10-16 09:49:18 -06:00
sx8.c sx8: use a per-host tag_set 2018-11-09 08:14:14 -07:00
umem.c block: remove the lock argument to blk_alloc_queue_node 2018-11-15 12:13:35 -07:00
umem.h
virtio_blk.c virtio_blk: implement mq_ops->commit_rqs() hook 2018-11-29 10:12:22 -07:00
xen-blkfront.c xen: fixes for 4.20-rc2 2018-11-10 08:58:48 -06:00
xsysace.c xsysace: convert to blk-mq 2018-10-15 20:08:24 -06:00
z2ram.c powerpc updates for 4.20 2018-10-26 14:36:21 -07:00