On Wed, Dec 22 2021 at 11:16P -0500, Ming Lei <ming.lei@xxxxxxxxxx> wrote: > On Tue, Dec 21, 2021 at 08:21:39AM -0800, Christoph Hellwig wrote: > > On Tue, Dec 21, 2021 at 10:14:56PM +0800, Ming Lei wrote: > > > 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. > > > > What is the benefit over just forcing bio-based dm-mpath for these > > devices? > > At least IO scheduler can't be used for bio based dm-mpath, also there should > be other drawbacks for bio based mpath and request mpath is often the default > option, maybe Mike has more input about bio vs request dm-mpath. Yeah, people use request-based for IO scheduling and more capable path selectors. Imposing bio-based would be a pretty jarring workaround for BLK_MQ_F_BLOCKING. request-based DM should properly support it. I'm on vacation for the next week but will have a look at this patchset once I'm back. Thanks, Mike