Hi Pankaj,
On 9/24/2022 1:36 AM, Pankaj Raghav
wrote:
Hi Jens, Please consider this patch series for the 6.1 release. - Background and Motivation: The zone storage implementation in Linux, introduced since v4.10, first targetted SMR drives which have a power of 2 (po2) zone size alignment requirement. The po2 zone size was further imposed implicitly by the block layer's blk_queue_chunk_sectors(), used to prevent IO merging across chunks beyond the specified size, since v3.16 through commit 762380ad9322 ("block: add notion of a chunk size for request merging"). But this same general block layer po2 requirement for blk_queue_chunk_sectors() was removed on v5.10 through commit 07d098e6bbad ("block: allow 'chunk_sectors' to be non-power-of-2"). NAND, which is the media used in newer zoned storage devices, does not naturally align to po2. In these devices, zone capacity(cap) is not the same as the po2 zone size. When the zone cap != zone size, then unmapped LBAs are introduced to cover the space between the zone cap and zone size. po2 requirement does not make sense for these type of zone storage devices. This patch series aims to remove these unmapped LBAs for zoned devices when zone cap is npo2. This is done by relaxing the po2 zone size constraint in the kernel and allowing zoned device with npo2 zone sizes if zone cap == zone size.
I came across function sd_zbc_check_capacity() in sd_zbc.c, it still errors out in case of npo2.
I don't see this series touching sd_zbc.c. Is there plan or
existing change to relax this check?
if (!is_power_of_2(zone_blocks)) {
"Zone size %llu is not a power of two.\n",
return -EINVAL;
}
Thanks.
Regards,
Can Guo.
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel