Re: [PATCH v2] statx.2: Add stx_atomic_write_unit_max_opt

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

 



Hi John,

On Thu, Jun 19, 2025 at 09:05:10AM +0000, John Garry wrote:
> XFS supports atomic writes - or untorn writes - based on two different
> methods:
> - HW offload in the disk
> - FS method based on out-of-place writes
> 
> The value reported in stx_atomic_write_unit_max will be the max size of the
> FS-based method.
> 
> The max atomic write unit size of the FS-based atomic writes will
> typically be much larger than what is capable from the HW offload. However,
> FS-based atomic writes will also be typically much slower.
> 
> Advertise this HW offload size limit to the user in a new statx member,
> stx_atomic_write_unit_max_opt.
> 
> We want STATX_WRITE_ATOMIC to get this new member in addition to the
> already-existing members, so mention that a value of 0 means that
> stx_atomic_write_unit_max holds this optimised limit.

Please say a "a value of 0 *in stx_atomic_write_unit_max_opt* means
that ...", to clarify.

> Linux will zero unused statx members, so stx_atomic_write_unit_max_opt
> will always hold 0 for older kernel versions which do not support
> this FS-based atomic write method (for XFS).
> 
> Signed-off-by: John Garry <john.g.garry@xxxxxxxxxx>
> ---
> Differences to RFC (v1):
> - general rewrite
> - mention that linux zeroes unused statx fields
> 
> diff --git a/man/man2/statx.2 b/man/man2/statx.2
> index ef7dbbcf9..29400d055 100644
> --- a/man/man2/statx.2
> +++ b/man/man2/statx.2
> @@ -74,6 +74,9 @@ struct statx {
>  \&
>      /* File offset alignment for direct I/O reads */
>      __u32   stx_dio_read_offset_align;
> +\&
> +    /* Direct I/O atomic write max opt limit */
> +    __u32 stx_atomic_write_unit_max_opt;

Please align the member with the one above.

>  };
>  .EE
>  .in
> @@ -266,7 +269,8 @@ STATX_SUBVOL	Want stx_subvol
>  	(since Linux 6.10; support varies by filesystem)
>  STATX_WRITE_ATOMIC	Want stx_atomic_write_unit_min,
>  	stx_atomic_write_unit_max,
> -	and stx_atomic_write_segments_max.
> +	stx_atomic_write_segments_max,
> +	and stx_atomic_write_unit_max_opt.
>  	(since Linux 6.11; support varies by filesystem)
>  STATX_DIO_READ_ALIGN	Want stx_dio_read_offset_align.
>  	(since Linux 6.14; support varies by filesystem)
> @@ -514,6 +518,20 @@ is supported on block devices since Linux 6.11.
>  The support on regular files varies by filesystem;
>  it is supported by xfs and ext4 since Linux 6.13.
>  .TP
> +.I stx_atomic_write_unit_max_opt
> +The maximum size (in bytes) which is optimised for writes issued with
> +torn-write protection.

Please break the line before 'optimized' and remove the current line
break.

> +If non-zero, this value will not exceed the value in

Please break the line after ','.

> +.I stx_atomic_write_unit_max
> +and will not be less than the value in
> +.I stx_atomic_write_unit_min.

This should be IR, and the '.' separated by a space, so that the '.' is
not in italics.


Have a lovely day!
Alex

> +A value of zero indicates that
> +.I stx_atomic_write_unit_max
> +is the optimised limit.
> +Slower writes may be experienced when the size of the write exceeds
> +.I stx_atomic_write_unit_max_opt
> +(when non-zero).
> +.TP
>  .I stx_atomic_write_segments_max
>  The maximum number of elements in an array of vectors
>  for a write with torn-write protection enabled.
> -- 
> 2.31.1
> 

-- 
<https://www.alejandro-colomar.es/>

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux