Re: [PATCH V2 2/4] blk-mq: fix shared queue mapping

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

 



On Mon, Dec 17, 2018 at 11:57:25AM +0100, Christoph Hellwig wrote:
> On Mon, Dec 17, 2018 at 06:42:46PM +0800, Ming Lei wrote:
> > From: Christoph Hellwig <hch@xxxxxx>
> > 
> > Even though poll_queues are zero, nvme's mapping for HCTX_TYPE_POLL still
> > may be setup via blk_mq_map_queues() which cause different mapping compared
> > with HCTX_TYPE_DEFAULT's mapping built from managed irq affinity.
> > 
> > This mapping will cause hctx->type to be over-written in blk_mq_map_swqueue(),
> > then the whole mapping may become broken, for example, one same ctx can be
> > mapped to different hctxs with same hctx type. This bad mapping has caused
> > IO hang in simple dd test, as reported by Mike.
> > 
> > This patch sets map->nr_queues as zero explictly if there is zero
> > queues for such queue type, also maps to correct hctx if .nr_queues of the
> > queue type is zero.
> > 
> > Cc: Jeff Moyer <jmoyer@xxxxxxxxxx>
> > Cc: Mike Snitzer <snitzer@xxxxxxxxxx>
> > Cc: Christoph Hellwig <hch@xxxxxx>
> > 
> > (don't handle zero .nr_queues map in blk_mq_map_swqueue())
> > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx>
> 
> I actually think we should split this into three patches:
> 
>  1) skip zero-queue maps in blk_mq_map_swqueue
>  2) skip zero-queue maps in blk_mq_map_queue
>  3) don't duplicate maps in nvme
> 
> sorry for misleading you with my quick WIP patch.
> 
> I can send send patches for my two with a proper changelogs, but

OK, I just want to fix the issue quick, :-)

> I'll leave blk_mq_map_swqueue to you as I don't full understand
> the rationale, even if it looks sensible to me.

If maps won't be duplicated, skip zero-queue maps in blk_mq_map_swqueue() may
not be necessary. However, it may make the code more robust/simple.

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