Re: [PATCH] blk-mq: Remove get_cpu() in __blk_mq_delay_run_hw_queue().

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 15, 2022 at 01:11:24PM +0100, Sebastian Andrzej Siewior wrote:
> On 2022-02-15 19:58:03 [+0800], Ming Lei wrote:
> > On Tue, Feb 15, 2022 at 10:31:49AM +0100, Sebastian Andrzej Siewior wrote:
> > > On 2022-02-15 17:23:45 [+0800], Ming Lei wrote:
> > > > > diff --git a/block/blk-mq.c b/block/blk-mq.c
> > > > > index 1adfe4824ef5e..90217f1b09add 100644
> > > > > --- a/block/blk-mq.c
> > > > > +++ b/block/blk-mq.c
> > > > > @@ -2040,14 +2040,10 @@ static void __blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async,
> > > > >  		return;
> > > > >  
> > > > >  	if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
> > > > > -		int cpu = get_cpu();
> > > > 
> > > > Did you observe the warning triggered?  might_sleep_if(true) in
> > > > __blk_mq_run_dispatch_ops() is only supposed to be run in case of
> > > > (hctx->flags & BLK_MQ_F_BLOCKING).
> > > 
> > > I haven't seen it triggering but if that call chain is possible then it
> > > will triggert due to get_cpu().
> > 
> > As I mentioned, the call chain isn't possible.
> 
> Why not? Is BLK_MQ_F_BLOCKING and blk_queue_has_srcu() exclusive?

blk_queue_has_srcu() returns true iff BLK_MQ_F_BLOCKING is set.

thanks,
Ming




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux