[PATCH v3 07/15] block: Limit atomic write IO size according to atomic_write_max_sectors
John Garry
john.g.garry at oracle.com
Tue Feb 13 00:15:08 PST 2024
On 13/02/2024 06:26, Christoph Hellwig wrote:
> On Wed, Jan 24, 2024 at 11:38:33AM +0000, John Garry wrote:
>> Currently an IO size is limited to the request_queue limits max_sectors.
>> Limit the size for an atomic write to queue limit atomic_write_max_sectors
>> value.
>
> Same here. Please have one patch that actually adds useful atomic write
> support to the block layer. That doesn't include fs stuff like
> IOCB_ATOMIC or the block file operation support, but to have a reviewable
> chunk I'd really like to see the full block-layer support for the limits,
> enforcing them, the merge prevention in a single commit with an extensive
> commit log explaining the semantics. That allows a useful review without
> looking at the full tree, and also will help with people reading history
> in the future.
Fine, so essentially merge 1, 2, 5, 7, 8, 9
BTW, I was also going to add this function which ensures that partitions
are properly aligned:
bool bdev_can_atomic_write(struct block_device *bdev)
{
struct request_queue *bd_queue = bdev->bd_queue;
struct queue_limits *limits = &bd_queue->limits;
if(!limits->atomic_write_unit_min_sectors)
return false;
if (bdev_is_partition(bdev)) {
unsigned int granularity = max(limits->atomic_write_unit_min_sectors,
limits->atomic_write_hw_boundary_sectors);
if (bdev->bd_start_sect % granularity)
return false;
}
return true;
}
I'm note sure if that would be better in the fops.c patch (or not added)
Thanks,
John
More information about the Linux-nvme
mailing list