[dm-devel] [PATCH 0/3] blk-mq/dm-rq: support BLK_MQ_F_BLOCKING for dm-rq
Ming Lei
ming.lei at redhat.com
Tue Dec 21 14:14:56 UTC 2021
Hello,
dm-rq may be built on blk-mq device which marks BLK_MQ_F_BLOCKING, so
dm_mq_queue_rq() may become to sleep current context.
Fixes the issue by allowing dm-rq to set BLK_MQ_F_BLOCKING in case that
any underlying queue is marked as BLK_MQ_F_BLOCKING.
DM request queue is allocated before allocating tagset, this way is a
bit special, so we need to pre-allocate srcu payload, then use the queue
flag of QUEUE_FLAG_BLOCKING for locking dispatch.
Ming Lei (3):
block: split having srcu from queue blocking
block: add blk_alloc_disk_srcu
dm: mark dm queue as blocking if any underlying is blocking
block/blk-core.c | 2 +-
block/blk-mq.c | 6 +++---
block/blk-mq.h | 2 +-
block/blk-sysfs.c | 2 +-
block/genhd.c | 5 +++--
drivers/md/dm-rq.c | 5 ++++-
drivers/md/dm-rq.h | 3 ++-
drivers/md/dm-table.c | 14 ++++++++++++++
drivers/md/dm.c | 5 +++--
drivers/md/dm.h | 1 +
include/linux/blkdev.h | 5 +++--
include/linux/genhd.h | 12 ++++++++----
12 files changed, 44 insertions(+), 18 deletions(-)
--
2.31.1
More information about the dm-devel
mailing list