Re: [PATCH V10 06/11] blk-mq: prepare for draining IO when hctx's all CPUs are offline

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

 



On Fri, May 08, 2020 at 08:11:55PM -0700, Bart Van Assche wrote:
> On 2020-05-08 19:09, Ming Lei wrote:
> > On Fri, May 08, 2020 at 04:26:17PM -0700, Bart Van Assche wrote:
> >> On 2020-05-04 19:09, Ming Lei wrote:
> >>> @@ -391,6 +393,7 @@ struct blk_mq_ops {
> >>>  enum {
> >>>  	BLK_MQ_F_SHOULD_MERGE	= 1 << 0,
> >>>  	BLK_MQ_F_TAG_SHARED	= 1 << 1,
> >>> +	BLK_MQ_F_NO_MANAGED_IRQ	= 1 << 2,
> >>>  	BLK_MQ_F_BLOCKING	= 1 << 5,
> >>>  	BLK_MQ_F_NO_SCHED	= 1 << 6,
> >>>  	BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
> >>> diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
> >>> index 77d70b633531..24b3a77810b6 100644
> >>> --- a/include/linux/cpuhotplug.h
> >>> +++ b/include/linux/cpuhotplug.h
> >>> @@ -152,6 +152,7 @@ enum cpuhp_state {
> >>>  	CPUHP_AP_SMPBOOT_THREADS,
> >>>  	CPUHP_AP_X86_VDSO_VMA_ONLINE,
> >>>  	CPUHP_AP_IRQ_AFFINITY_ONLINE,
> >>> +	CPUHP_AP_BLK_MQ_ONLINE,
> >>>  	CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS,
> >>>  	CPUHP_AP_X86_INTEL_EPB_ONLINE,
> >>>  	CPUHP_AP_PERF_ONLINE,
> >>
> >> Wouldn't BLK_MQ_F_NO_IRQ be a better name than BLK_MQ_F_NO_MANAGED_IRQ?
> > 
> > No, what this patchset tries to do is to address request timeout or hang
> > issue in case that managed irq is applied in blk-mq driver.
> 
> What is a managed IRQ? The following query did not produce a useful answer:
> 
> $ git grep -nHi managed.irq

[ming@T590 linux]$ git grep -n MANAGED ./kernel/irq
kernel/irq/chip.c:188:  IRQ_STARTUP_MANAGED,
kernel/irq/chip.c:226:  return IRQ_STARTUP_MANAGED;
kernel/irq/chip.c:271:          case IRQ_STARTUP_MANAGED:
kernel/irq/cpuhotplug.c:179:    if (!housekeeping_enabled(HK_FLAG_MANAGED_IRQ))
kernel/irq/cpuhotplug.c:182:    hk_mask = housekeeping_cpumask(HK_FLAG_MANAGED_IRQ);
kernel/irq/debugfs.c:114:       BIT_MASK_DESCR(IRQD_AFFINITY_MANAGED),
kernel/irq/debugfs.c:115:       BIT_MASK_DESCR(IRQD_MANAGED_SHUTDOWN),
kernel/irq/internals.h:215:     __irqd_to_state(d) |= IRQD_MANAGED_SHUTDOWN;
kernel/irq/internals.h:220:     __irqd_to_state(d) &= ~IRQD_MANAGED_SHUTDOWN;
kernel/irq/irqdesc.c:487:                               flags = IRQD_AFFINITY_MANAGED |
kernel/irq/irqdesc.c:488:                                       IRQD_MANAGED_SHUTDOWN;
kernel/irq/manage.c:170: * AFFINITY_MANAGED flag.
kernel/irq/manage.c:241:            housekeeping_enabled(HK_FLAG_MANAGED_IRQ)) {
kernel/irq/manage.c:247:                hk_mask = housekeeping_cpumask(HK_FLAG_MANAGED_IRQ);

The exact name should be AFFINITY_MANAGED, however the name of managed
irq has been used in commit log and isolation cpus code for a bit long.

OK, I will add comment on BLK_MQ_F_NO_MANAGED_IRQ a bit in next version.

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