Re: [RFC PATCH v2 3/4] block: remove queue_is_mq restriction from blk_revalidate_disk_zones()

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

 



On 2020/05/16 12:55, Coly Li wrote:
> The bcache driver is bio based and NOT request based multiqueued driver,
> if a zoned SMR hard drive is used as backing device of a bcache device,
> calling blk_revalidate_disk_zones() for the bcache device will fail due
> to the following check in blk_revalidate_disk_zones(),
> 478       if (WARN_ON_ONCE(!queue_is_mq(q)))
> 479             return -EIO;
> 
> Now bcache is able to export the zoned information from the underlying
> zoned SMR drives and format zonefs on top of a bcache device, the
> resitriction that a zoned device should be multiqueued is unnecessary
> for now.
> 
> Although in commit ae58954d8734c ("block: don't handle bio based drivers
> in blk_revalidate_disk_zones") it is said that bio based drivers should
> not call blk_revalidate_disk_zones() and just manually update their own
> q->nr_zones, but this is inaccurate. The bio based drivers also need to
> set their zone size and initialize bitmaps for cnv and seq zones, it is
> necessary to call blk_revalidate_disk_zones() for bio based drivers.
> 
> This patch removes the above queue_is_mq() restriction to permit
> bcache driver calls blk_revalidate_disk_zones() for bcache device zoned
> information initialization.
> 
> Fixes: ae58954d8734c ("block: don't handle bio based drivers in blk_revalidate_disk_zones")
> Signed-off-by: Coly Li <colyli@xxxxxxx>
> Cc: Christoph Hellwig <hch@xxxxxx>
> Cc: Damien Le Moal <damien.lemoal@xxxxxxx>
> Cc: Hannes Reinecke <hare@xxxxxxxx>
> Cc: Jens Axboe <axboe@xxxxxxxxx>
> Cc: Keith Busch <kbusch@xxxxxxxxxx>
> ---
>  block/blk-zoned.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/block/blk-zoned.c b/block/blk-zoned.c
> index f87956e0dcaf..1e0708c68267 100644
> --- a/block/blk-zoned.c
> +++ b/block/blk-zoned.c
> @@ -475,8 +475,6 @@ int blk_revalidate_disk_zones(struct gendisk *disk)
>  
>  	if (WARN_ON_ONCE(!blk_queue_is_zoned(q)))
>  		return -EIO;
> -	if (WARN_ON_ONCE(!queue_is_mq(q)))
> -		return -EIO;

Same comment as Christoph: BIO drivers can set nr_zones and chunk_sectors
themselves, manually. They also do not need the bitmaps as BIO devices do not
have an elevator, and as Christoph said, can (if needed) look at the bitmaps of
the underlying device (e.g. for zone conv vs seq zone type differentiation).

So I do not think this patch is needed, and would only cause more memory
consumption for no good reason that I can see.

>  
>  	/*
>  	 * Ensure that all memory allocations in this context are done as if
> 


-- 
Damien Le Moal
Western Digital Research




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux