]> www.infradead.org Git - users/hch/misc.git/commitdiff
fs: add write stream information to statx
authorKeith Busch <kbusch@kernel.org>
Fri, 8 Nov 2024 19:36:23 +0000 (11:36 -0800)
committerChristoph Hellwig <hch@lst.de>
Tue, 19 Nov 2024 10:34:44 +0000 (11:34 +0100)
Add new statx field to report the maximum number of write streams
supported and the granularity for them.

Signed-off-by: Keith Busch <kbusch@kernel.org>
[hch: s/write_hint/write_stream/g, add granularity]
Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/stat.c
include/linux/stat.h
include/uapi/linux/stat.h

index 41e598376d7e3d1a43641d0dd5ad467154e34364..aa2b7fa4a877260e4443761684189433d3c3d8b0 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -704,6 +704,8 @@ cp_statx(const struct kstat *stat, struct statx __user *buffer)
        tmp.stx_atomic_write_unit_min = stat->atomic_write_unit_min;
        tmp.stx_atomic_write_unit_max = stat->atomic_write_unit_max;
        tmp.stx_atomic_write_segments_max = stat->atomic_write_segments_max;
+       tmp.stx_write_stream_granularity = stat->write_stream_granularity;
+       tmp.stx_write_stream_max = stat->write_stream_max;
 
        return copy_to_user(buffer, &tmp, sizeof(tmp)) ? -EFAULT : 0;
 }
index 3d900c86981c5b0ae92bb4e972ff36586093f59f..36d4dfb291abd743756b6849ef023a65d0d01aa4 100644 (file)
@@ -57,6 +57,8 @@ struct kstat {
        u32             atomic_write_unit_min;
        u32             atomic_write_unit_max;
        u32             atomic_write_segments_max;
+       u32             write_stream_granularity;
+       u16             write_stream_max;
 };
 
 /* These definitions are internal to the kernel for now. Mainly used by nfsd. */
index 887a2528644168a3f0f16752e6b21958a89e0bac..547c62a1a3a7cba0c24d789363840fbe3daf5a1c 100644 (file)
@@ -132,9 +132,11 @@ struct statx {
        __u32   stx_atomic_write_unit_max;      /* Max atomic write unit in bytes */
        /* 0xb0 */
        __u32   stx_atomic_write_segments_max;  /* Max atomic write segment count */
-       __u32   __spare1[1];
+       __u32   stx_write_stream_granularity;
        /* 0xb8 */
-       __u64   __spare3[9];    /* Spare space for future expansion */
+       __u16   stx_write_stream_max;
+       __u16   __sparse2[3];
+       __u64   __spare3[8];    /* Spare space for future expansion */
        /* 0x100 */
 };
 
@@ -164,6 +166,7 @@ struct statx {
 #define STATX_MNT_ID_UNIQUE    0x00004000U     /* Want/got extended stx_mount_id */
 #define STATX_SUBVOL           0x00008000U     /* Want/got stx_subvol */
 #define STATX_WRITE_ATOMIC     0x00010000U     /* Want/got atomic_write_* fields */
+#define STATX_WRITE_STREAM     0x00020000U     /* Want/got write_stream_* */
 
 #define STATX__RESERVED                0x80000000U     /* Reserved for future struct statx expansion */