public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] xfs_io: catch statx fields up to 6.15
@ 2025-04-16  5:21 Darrick J. Wong
  2025-04-16  5:22 ` [PATCH 2/2] xfs_io: make statx mask parsing more generally useful Darrick J. Wong
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Darrick J. Wong @ 2025-04-16  5:21 UTC (permalink / raw)
  To: Andrey Albershteyn; +Cc: xfs, Christoph Hellwig

From: Darrick J. Wong <djwong@kernel.org>

Add all the new statx fields that have accumulated for the past couple
of years.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 io/statx.h            |   25 ++++++++++++++++++++++++-
 io/stat.c             |    5 +++++
 m4/package_libcdev.m4 |    2 +-
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/io/statx.h b/io/statx.h
index 347f6d08210f83..273644f53cf1c4 100644
--- a/io/statx.h
+++ b/io/statx.h
@@ -138,7 +138,10 @@ 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];
+
+	/* File offset alignment for direct I/O reads */
+	__u32	stx_dio_read_offset_align;
+
 	/* 0xb8 */
 	__u64	__spare3[9];	/* Spare space for future expansion */
 	/* 0x100 */
@@ -191,8 +194,28 @@ struct statx {
 
 #endif /* STATX_TYPE */
 
+#ifndef STATX_MNT_ID
+#define STATX_MNT_ID		0x00001000U	/* Got stx_mnt_id */
+#endif
+
+#ifndef STATX_DIOALIGN
+#define STATX_DIOALIGN		0x00002000U	/* Want/got direct I/O alignment info */
+#endif
+
+#ifndef STATX_MNT_ID_UNIQUE
+#define STATX_MNT_ID_UNIQUE	0x00004000U	/* Want/got extended stx_mount_id */
+#endif
+
+#ifndef STATX_SUBVOL
+#define STATX_SUBVOL		0x00008000U	/* Want/got stx_subvol */
+#endif
+
 #ifndef STATX_WRITE_ATOMIC
 #define STATX_WRITE_ATOMIC	0x00010000U	/* Want/got atomic_write_* fields */
 #endif
 
+#ifndef STATX_DIO_READ_ALIGN
+#define STATX_DIO_READ_ALIGN	0x00020000U	/* Want/got dio read alignment info */
+#endif
+
 #endif /* XFS_IO_STATX_H */
diff --git a/io/stat.c b/io/stat.c
index d27f916800c00a..b37b1a12b8b2fd 100644
--- a/io/stat.c
+++ b/io/stat.c
@@ -365,9 +365,14 @@ dump_raw_statx(struct statx *stx)
 	printf("stat.rdev_minor = %u\n", stx->stx_rdev_minor);
 	printf("stat.dev_major = %u\n", stx->stx_dev_major);
 	printf("stat.dev_minor = %u\n", stx->stx_dev_minor);
+	printf("stat.mnt_id = 0x%llu\n", (unsigned long long)stx->stx_mnt_id);
+	printf("stat.dio_mem_align = %u\n", stx->stx_dio_mem_align);
+	printf("stat.dio_offset_align = %u\n", stx->stx_dio_offset_align);
+	printf("stat.subvol = 0x%llu\n", (unsigned long long)stx->stx_subvol);
 	printf("stat.atomic_write_unit_min = %u\n", stx->stx_atomic_write_unit_min);
 	printf("stat.atomic_write_unit_max = %u\n", stx->stx_atomic_write_unit_max);
 	printf("stat.atomic_write_segments_max = %u\n", stx->stx_atomic_write_segments_max);
+	printf("stat.dio_read_offset_align = %u\n", stx->stx_dio_read_offset_align);
 	return 0;
 }
 
diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4
index af9da8124dbdc8..61353d0aa9d536 100644
--- a/m4/package_libcdev.m4
+++ b/m4/package_libcdev.m4
@@ -126,7 +126,7 @@ AC_DEFUN([AC_NEED_INTERNAL_FSCRYPT_POLICY_V2],
 AC_DEFUN([AC_NEED_INTERNAL_STATX],
   [ AC_CHECK_TYPE(struct statx,
       [
-        AC_CHECK_MEMBER(struct statx.stx_atomic_write_unit_min,
+        AC_CHECK_MEMBER(struct statx.stx_dio_read_offset_align,
           ,
           need_internal_statx=yes,
           [#include <linux/stat.h>]

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] xfs_io: make statx mask parsing more generally useful
  2025-04-16  5:21 [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Darrick J. Wong
@ 2025-04-16  5:22 ` Darrick J. Wong
  2025-04-16  9:50   ` Andrey Albershteyn
  2025-04-22  6:21   ` Christoph Hellwig
  2025-04-16  9:15 ` [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Andrey Albershteyn
  2025-04-22  6:15 ` Christoph Hellwig
  2 siblings, 2 replies; 10+ messages in thread
From: Darrick J. Wong @ 2025-04-16  5:22 UTC (permalink / raw)
  To: Andrey Albershteyn; +Cc: xfs, Christoph Hellwig

From: Darrick J. Wong <djwong@kernel.org>

Enhance the statx -m parsing to be more useful:

Add words for all the new STATX_* field flags added in the previous
patch.

Allow "+" and "-" prefixes to add or remove flags from the mask.

Allow multiple arguments to be specified as a comma separated list.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 io/stat.c         |  120 ++++++++++++++++++++++++++++++++++++++++++++++-------
 man/man8/xfs_io.8 |   11 +++++
 2 files changed, 116 insertions(+), 15 deletions(-)

diff --git a/io/stat.c b/io/stat.c
index b37b1a12b8b2fd..ebc085845972c4 100644
--- a/io/stat.c
+++ b/io/stat.c
@@ -321,10 +321,41 @@ _statx(
 #endif
 }
 
+struct statx_masks {
+	const char	*name;
+	unsigned int	mask;
+};
+
+static const struct statx_masks statx_masks[] = {
+	{"basic",		STATX_BASIC_STATS},
+	{"all",			STATX_ALL},
+
+	{"type",		STATX_TYPE},
+	{"mode",		STATX_MODE},
+	{"nlink",		STATX_NLINK},
+	{"uid",			STATX_UID},
+	{"gid",			STATX_GID},
+	{"atime",		STATX_ATIME},
+	{"mtime",		STATX_MTIME},
+	{"ctime",		STATX_CTIME},
+	{"ino",			STATX_INO},
+	{"size",		STATX_SIZE},
+	{"blocks",		STATX_BLOCKS},
+	{"btime",		STATX_BTIME},
+	{"mnt_id",		STATX_MNT_ID},
+	{"dioalign",		STATX_DIOALIGN},
+	{"mnt_id_unique",	STATX_MNT_ID_UNIQUE},
+	{"subvol",		STATX_SUBVOL},
+	{"write_atomic",	STATX_WRITE_ATOMIC},
+	{"dio_read_align",	STATX_DIO_READ_ALIGN},
+};
+
 static void
 statx_help(void)
 {
-        printf(_(
+	unsigned int	i;
+
+	printf(_(
 "\n"
 " Display extended file status.\n"
 "\n"
@@ -333,9 +364,16 @@ statx_help(void)
 " -r -- Print raw statx structure fields\n"
 " -m mask -- Specify the field mask for the statx call\n"
 "            (can also be 'basic' or 'all'; default STATX_ALL)\n"
+" -m +mask -- Add this to the field mask for the statx call\n"
+" -m -mask -- Remove this from the field mask for the statx call\n"
 " -D -- Don't sync attributes with the server\n"
 " -F -- Force the attributes to be sync'd with the server\n"
-"\n"));
+"\n"
+"statx mask values: "));
+
+	for (i = 0; i < ARRAY_SIZE(statx_masks); i++)
+		printf("%s%s", i == 0 ? "" : ", ", statx_masks[i].name);
+	printf("\n");
 }
 
 /* statx helper */
@@ -376,6 +414,68 @@ dump_raw_statx(struct statx *stx)
 	return 0;
 }
 
+enum statx_mask_op {
+	SET,
+	REMOVE,
+	ADD,
+};
+
+static bool
+parse_statx_masks(
+	char			*optarg,
+	unsigned int		*caller_mask)
+{
+	char			*arg = optarg;
+	char			*word;
+	unsigned int		i;
+
+	while ((word = strtok(arg, ",")) != NULL) {
+		enum statx_mask_op op;
+		unsigned int	mask;
+		char		*p;
+
+		arg = NULL;
+
+		if (*word == '+') {
+			op = ADD;
+			word++;
+		} else if (*word == '-') {
+			op = REMOVE;
+			word++;
+		} else {
+			op = SET;
+		}
+
+		for (i = 0; i < ARRAY_SIZE(statx_masks); i++) {
+			if (!strcmp(statx_masks[i].name, word)) {
+				mask = statx_masks[i].mask;
+				goto process_op;
+			}
+		}
+
+		mask = strtoul(word, &p, 0);
+		if (!p || p == word) {
+			printf( _("non-numeric mask -- %s\n"), word);
+			return false;
+		}
+
+process_op:
+		switch (op) {
+		case ADD:
+			*caller_mask |= mask;
+			continue;
+		case REMOVE:
+			*caller_mask &= ~mask;
+			continue;
+		case SET:
+			*caller_mask = mask;
+			continue;
+		}
+	}
+
+	return true;
+}
+
 /*
  * options:
  * 	- input flags - query type
@@ -388,7 +488,6 @@ statx_f(
 	char		**argv)
 {
 	int		c, verbose = 0, raw = 0;
-	char		*p;
 	struct statx	stx;
 	int		atflag = 0;
 	unsigned int	mask = STATX_ALL;
@@ -396,18 +495,9 @@ statx_f(
 	while ((c = getopt(argc, argv, "m:rvFD")) != EOF) {
 		switch (c) {
 		case 'm':
-			if (strcmp(optarg, "basic") == 0)
-				mask = STATX_BASIC_STATS;
-			else if (strcmp(optarg, "all") == 0)
-				mask = STATX_ALL;
-			else {
-				mask = strtoul(optarg, &p, 0);
-				if (!p || p == optarg) {
-					printf(
-				_("non-numeric mask -- %s\n"), optarg);
-					exitcode = 1;
-					return 0;
-				}
+			if (!parse_statx_masks(optarg, &mask)) {
+				exitcode = 1;
+				return 0;
 			}
 			break;
 		case 'r':
diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8
index 726e25af272242..0e8e69a1fe0c22 100644
--- a/man/man8/xfs_io.8
+++ b/man/man8/xfs_io.8
@@ -999,6 +999,17 @@ .SH FILE I/O COMMANDS
 .B \-m <mask>
 Specify a numeric field mask for the statx call.
 .TP
+.BI "\-m +" value
+Add this value to the statx field value.
+Values can be numeric, or they can be words describing the desired fields.
+See the help command output for a list of recognized words.
+.TP
+.BI "\-m -" value
+Remove this value from the statx field value.
+.TP
+.BI "\-m +" value ",-" value
+Add and remove multiple values from the statx field value.
+.TP
 .B \-F
 Force the attributes to be synced with the server.
 .TP

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] xfs_io: catch statx fields up to 6.15
  2025-04-16  5:21 [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Darrick J. Wong
  2025-04-16  5:22 ` [PATCH 2/2] xfs_io: make statx mask parsing more generally useful Darrick J. Wong
@ 2025-04-16  9:15 ` Andrey Albershteyn
  2025-04-22  6:15 ` Christoph Hellwig
  2 siblings, 0 replies; 10+ messages in thread
From: Andrey Albershteyn @ 2025-04-16  9:15 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: xfs, Christoph Hellwig

On 2025-04-15 22:21:34, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Add all the new statx fields that have accumulated for the past couple
> of years.
> 
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> ---
>  io/statx.h            |   25 ++++++++++++++++++++++++-
>  io/stat.c             |    5 +++++
>  m4/package_libcdev.m4 |    2 +-
>  3 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/io/statx.h b/io/statx.h
> index 347f6d08210f83..273644f53cf1c4 100644
> --- a/io/statx.h
> +++ b/io/statx.h
> @@ -138,7 +138,10 @@ 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];
> +
> +	/* File offset alignment for direct I/O reads */
> +	__u32	stx_dio_read_offset_align;
> +
>  	/* 0xb8 */
>  	__u64	__spare3[9];	/* Spare space for future expansion */
>  	/* 0x100 */
> @@ -191,8 +194,28 @@ struct statx {
>  
>  #endif /* STATX_TYPE */
>  
> +#ifndef STATX_MNT_ID
> +#define STATX_MNT_ID		0x00001000U	/* Got stx_mnt_id */
> +#endif
> +
> +#ifndef STATX_DIOALIGN
> +#define STATX_DIOALIGN		0x00002000U	/* Want/got direct I/O alignment info */
> +#endif
> +
> +#ifndef STATX_MNT_ID_UNIQUE
> +#define STATX_MNT_ID_UNIQUE	0x00004000U	/* Want/got extended stx_mount_id */
> +#endif
> +
> +#ifndef STATX_SUBVOL
> +#define STATX_SUBVOL		0x00008000U	/* Want/got stx_subvol */
> +#endif
> +
>  #ifndef STATX_WRITE_ATOMIC
>  #define STATX_WRITE_ATOMIC	0x00010000U	/* Want/got atomic_write_* fields */
>  #endif
>  
> +#ifndef STATX_DIO_READ_ALIGN
> +#define STATX_DIO_READ_ALIGN	0x00020000U	/* Want/got dio read alignment info */
> +#endif
> +
>  #endif /* XFS_IO_STATX_H */
> diff --git a/io/stat.c b/io/stat.c
> index d27f916800c00a..b37b1a12b8b2fd 100644
> --- a/io/stat.c
> +++ b/io/stat.c
> @@ -365,9 +365,14 @@ dump_raw_statx(struct statx *stx)
>  	printf("stat.rdev_minor = %u\n", stx->stx_rdev_minor);
>  	printf("stat.dev_major = %u\n", stx->stx_dev_major);
>  	printf("stat.dev_minor = %u\n", stx->stx_dev_minor);
> +	printf("stat.mnt_id = 0x%llu\n", (unsigned long long)stx->stx_mnt_id);
> +	printf("stat.dio_mem_align = %u\n", stx->stx_dio_mem_align);
> +	printf("stat.dio_offset_align = %u\n", stx->stx_dio_offset_align);
> +	printf("stat.subvol = 0x%llu\n", (unsigned long long)stx->stx_subvol);
>  	printf("stat.atomic_write_unit_min = %u\n", stx->stx_atomic_write_unit_min);
>  	printf("stat.atomic_write_unit_max = %u\n", stx->stx_atomic_write_unit_max);
>  	printf("stat.atomic_write_segments_max = %u\n", stx->stx_atomic_write_segments_max);
> +	printf("stat.dio_read_offset_align = %u\n", stx->stx_dio_read_offset_align);
>  	return 0;
>  }
>  
> diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4
> index af9da8124dbdc8..61353d0aa9d536 100644
> --- a/m4/package_libcdev.m4
> +++ b/m4/package_libcdev.m4
> @@ -126,7 +126,7 @@ AC_DEFUN([AC_NEED_INTERNAL_FSCRYPT_POLICY_V2],
>  AC_DEFUN([AC_NEED_INTERNAL_STATX],
>    [ AC_CHECK_TYPE(struct statx,
>        [
> -        AC_CHECK_MEMBER(struct statx.stx_atomic_write_unit_min,
> +        AC_CHECK_MEMBER(struct statx.stx_dio_read_offset_align,
>            ,
>            need_internal_statx=yes,
>            [#include <linux/stat.h>]
> 

Looks good to me
Reviewed-by: Andrey Albershteyn <aalbersh@kernel.org>

-- 
- Andrey


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] xfs_io: make statx mask parsing more generally useful
  2025-04-16  5:22 ` [PATCH 2/2] xfs_io: make statx mask parsing more generally useful Darrick J. Wong
@ 2025-04-16  9:50   ` Andrey Albershteyn
  2025-04-22  6:21   ` Christoph Hellwig
  1 sibling, 0 replies; 10+ messages in thread
From: Andrey Albershteyn @ 2025-04-16  9:50 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: xfs, Christoph Hellwig

On 2025-04-15 22:22:51, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Enhance the statx -m parsing to be more useful:
> 
> Add words for all the new STATX_* field flags added in the previous
> patch.
> 
> Allow "+" and "-" prefixes to add or remove flags from the mask.
> 
> Allow multiple arguments to be specified as a comma separated list.
> 
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> ---
>  io/stat.c         |  120 ++++++++++++++++++++++++++++++++++++++++++++++-------
>  man/man8/xfs_io.8 |   11 +++++
>  2 files changed, 116 insertions(+), 15 deletions(-)
> 
> diff --git a/io/stat.c b/io/stat.c
> index b37b1a12b8b2fd..ebc085845972c4 100644
> --- a/io/stat.c
> +++ b/io/stat.c
> @@ -321,10 +321,41 @@ _statx(
>  #endif
>  }
>  
> +struct statx_masks {
> +	const char	*name;
> +	unsigned int	mask;
> +};
> +
> +static const struct statx_masks statx_masks[] = {
> +	{"basic",		STATX_BASIC_STATS},
> +	{"all",			STATX_ALL},
> +
> +	{"type",		STATX_TYPE},
> +	{"mode",		STATX_MODE},
> +	{"nlink",		STATX_NLINK},
> +	{"uid",			STATX_UID},
> +	{"gid",			STATX_GID},
> +	{"atime",		STATX_ATIME},
> +	{"mtime",		STATX_MTIME},
> +	{"ctime",		STATX_CTIME},
> +	{"ino",			STATX_INO},
> +	{"size",		STATX_SIZE},
> +	{"blocks",		STATX_BLOCKS},
> +	{"btime",		STATX_BTIME},
> +	{"mnt_id",		STATX_MNT_ID},
> +	{"dioalign",		STATX_DIOALIGN},
> +	{"mnt_id_unique",	STATX_MNT_ID_UNIQUE},
> +	{"subvol",		STATX_SUBVOL},
> +	{"write_atomic",	STATX_WRITE_ATOMIC},
> +	{"dio_read_align",	STATX_DIO_READ_ALIGN},
> +};
> +
>  static void
>  statx_help(void)
>  {
> -        printf(_(
> +	unsigned int	i;
> +
> +	printf(_(
>  "\n"
>  " Display extended file status.\n"
>  "\n"
> @@ -333,9 +364,16 @@ statx_help(void)
>  " -r -- Print raw statx structure fields\n"
>  " -m mask -- Specify the field mask for the statx call\n"
>  "            (can also be 'basic' or 'all'; default STATX_ALL)\n"
this comment     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
then probably can go away, as it can be any of the above now

Otherwise, looks good to me
Reviewed-by: Andrey Albershteyn <aalbersh@kernel.org>

> +" -m +mask -- Add this to the field mask for the statx call\n"
> +" -m -mask -- Remove this from the field mask for the statx call\n"
>  " -D -- Don't sync attributes with the server\n"
>  " -F -- Force the attributes to be sync'd with the server\n"
> -"\n"));
> +"\n"
> +"statx mask values: "));
> +
> +	for (i = 0; i < ARRAY_SIZE(statx_masks); i++)
> +		printf("%s%s", i == 0 ? "" : ", ", statx_masks[i].name);
> +	printf("\n");
>  }
>  
>  /* statx helper */
> @@ -376,6 +414,68 @@ dump_raw_statx(struct statx *stx)
>  	return 0;
>  }
>  
> +enum statx_mask_op {
> +	SET,
> +	REMOVE,
> +	ADD,
> +};
> +
> +static bool
> +parse_statx_masks(
> +	char			*optarg,
> +	unsigned int		*caller_mask)
> +{
> +	char			*arg = optarg;
> +	char			*word;
> +	unsigned int		i;
> +
> +	while ((word = strtok(arg, ",")) != NULL) {
> +		enum statx_mask_op op;
> +		unsigned int	mask;
> +		char		*p;
> +
> +		arg = NULL;
> +
> +		if (*word == '+') {
> +			op = ADD;
> +			word++;
> +		} else if (*word == '-') {
> +			op = REMOVE;
> +			word++;
> +		} else {
> +			op = SET;
> +		}
> +
> +		for (i = 0; i < ARRAY_SIZE(statx_masks); i++) {
> +			if (!strcmp(statx_masks[i].name, word)) {
> +				mask = statx_masks[i].mask;
> +				goto process_op;
> +			}
> +		}
> +
> +		mask = strtoul(word, &p, 0);
> +		if (!p || p == word) {
> +			printf( _("non-numeric mask -- %s\n"), word);
> +			return false;
> +		}
> +
> +process_op:
> +		switch (op) {
> +		case ADD:
> +			*caller_mask |= mask;
> +			continue;
> +		case REMOVE:
> +			*caller_mask &= ~mask;
> +			continue;
> +		case SET:
> +			*caller_mask = mask;
> +			continue;
> +		}
> +	}
> +
> +	return true;
> +}
> +
>  /*
>   * options:
>   * 	- input flags - query type
> @@ -388,7 +488,6 @@ statx_f(
>  	char		**argv)
>  {
>  	int		c, verbose = 0, raw = 0;
> -	char		*p;
>  	struct statx	stx;
>  	int		atflag = 0;
>  	unsigned int	mask = STATX_ALL;
> @@ -396,18 +495,9 @@ statx_f(
>  	while ((c = getopt(argc, argv, "m:rvFD")) != EOF) {
>  		switch (c) {
>  		case 'm':
> -			if (strcmp(optarg, "basic") == 0)
> -				mask = STATX_BASIC_STATS;
> -			else if (strcmp(optarg, "all") == 0)
> -				mask = STATX_ALL;
> -			else {
> -				mask = strtoul(optarg, &p, 0);
> -				if (!p || p == optarg) {
> -					printf(
> -				_("non-numeric mask -- %s\n"), optarg);
> -					exitcode = 1;
> -					return 0;
> -				}
> +			if (!parse_statx_masks(optarg, &mask)) {
> +				exitcode = 1;
> +				return 0;
>  			}
>  			break;
>  		case 'r':
> diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8
> index 726e25af272242..0e8e69a1fe0c22 100644
> --- a/man/man8/xfs_io.8
> +++ b/man/man8/xfs_io.8
> @@ -999,6 +999,17 @@ .SH FILE I/O COMMANDS
>  .B \-m <mask>
>  Specify a numeric field mask for the statx call.
>  .TP
> +.BI "\-m +" value
> +Add this value to the statx field value.
> +Values can be numeric, or they can be words describing the desired fields.
> +See the help command output for a list of recognized words.
> +.TP
> +.BI "\-m -" value
> +Remove this value from the statx field value.
> +.TP
> +.BI "\-m +" value ",-" value
> +Add and remove multiple values from the statx field value.
> +.TP
>  .B \-F
>  Force the attributes to be synced with the server.
>  .TP
> 

-- 
- Andrey


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] xfs_io: catch statx fields up to 6.15
  2025-04-16  5:21 [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Darrick J. Wong
  2025-04-16  5:22 ` [PATCH 2/2] xfs_io: make statx mask parsing more generally useful Darrick J. Wong
  2025-04-16  9:15 ` [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Andrey Albershteyn
@ 2025-04-22  6:15 ` Christoph Hellwig
  2025-04-23 15:31   ` Darrick J. Wong
  2 siblings, 1 reply; 10+ messages in thread
From: Christoph Hellwig @ 2025-04-22  6:15 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Andrey Albershteyn, xfs, Christoph Hellwig

On Tue, Apr 15, 2025 at 10:21:34PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Add all the new statx fields that have accumulated for the past couple
> of years.

I only see a single new field, although I can spot a few flags and
missing printing of a few fields.

Maybe update the commit log a little?

Otherwise looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] xfs_io: make statx mask parsing more generally useful
  2025-04-16  5:22 ` [PATCH 2/2] xfs_io: make statx mask parsing more generally useful Darrick J. Wong
  2025-04-16  9:50   ` Andrey Albershteyn
@ 2025-04-22  6:21   ` Christoph Hellwig
  2025-04-23 15:33     ` Darrick J. Wong
  1 sibling, 1 reply; 10+ messages in thread
From: Christoph Hellwig @ 2025-04-22  6:21 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Andrey Albershteyn, xfs, Christoph Hellwig

On Tue, Apr 15, 2025 at 10:22:51PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Enhance the statx -m parsing to be more useful:

Btw, -m claims to set STATX_ALL, which the kernel deprecated soon after
adding it:

 * This is deprecated, and shall remain the same value in the future. To avoid
 * confusion please use the equivalent (STATX_BASIC_STATS | STATX_BTIME)
 * instead.

do we need to do something about the -m definition in xfs_io because
all fields aren't included in STATX_ALL?


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] xfs_io: catch statx fields up to 6.15
  2025-04-22  6:15 ` Christoph Hellwig
@ 2025-04-23 15:31   ` Darrick J. Wong
  2025-04-23 15:44     ` Christoph Hellwig
  0 siblings, 1 reply; 10+ messages in thread
From: Darrick J. Wong @ 2025-04-23 15:31 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Andrey Albershteyn, xfs

On Mon, Apr 21, 2025 at 11:15:04PM -0700, Christoph Hellwig wrote:
> On Tue, Apr 15, 2025 at 10:21:34PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> > 
> > Add all the new statx fields that have accumulated for the past couple
> > of years.
> 
> I only see a single new field, although I can spot a few flags and
> missing printing of a few fields.
> 
> Maybe update the commit log a little?

"Add all the new statx fields and flags that have accumulated for the
past couple of years so they all print now." ?

> Otherwise looks good:
> 
> Reviewed-by: Christoph Hellwig <hch@lst.de>

Thanks!

--D

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] xfs_io: make statx mask parsing more generally useful
  2025-04-22  6:21   ` Christoph Hellwig
@ 2025-04-23 15:33     ` Darrick J. Wong
  2025-04-23 15:44       ` Christoph Hellwig
  0 siblings, 1 reply; 10+ messages in thread
From: Darrick J. Wong @ 2025-04-23 15:33 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Andrey Albershteyn, xfs

On Mon, Apr 21, 2025 at 11:21:06PM -0700, Christoph Hellwig wrote:
> On Tue, Apr 15, 2025 at 10:22:51PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> > 
> > Enhance the statx -m parsing to be more useful:
> 
> Btw, -m claims to set STATX_ALL, which the kernel deprecated soon after
> adding it:
> 
>  * This is deprecated, and shall remain the same value in the future. To avoid
>  * confusion please use the equivalent (STATX_BASIC_STATS | STATX_BTIME)
>  * instead.
> 
> do we need to do something about the -m definition in xfs_io because
> all fields aren't included in STATX_ALL?

Hrm.  Nothing in fstests uses it AFAICT so maybe we could just get rid
of the -m option.  Or we could redefine "all" to map to ~1U so it
actually does what that word means?

--D

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] xfs_io: catch statx fields up to 6.15
  2025-04-23 15:31   ` Darrick J. Wong
@ 2025-04-23 15:44     ` Christoph Hellwig
  0 siblings, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2025-04-23 15:44 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Christoph Hellwig, Andrey Albershteyn, xfs

On Wed, Apr 23, 2025 at 08:31:23AM -0700, Darrick J. Wong wrote:
> "Add all the new statx fields and flags that have accumulated for the
> past couple of years so they all print now." ?

Sounds good.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] xfs_io: make statx mask parsing more generally useful
  2025-04-23 15:33     ` Darrick J. Wong
@ 2025-04-23 15:44       ` Christoph Hellwig
  0 siblings, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2025-04-23 15:44 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Christoph Hellwig, Andrey Albershteyn, xfs

On Wed, Apr 23, 2025 at 08:33:52AM -0700, Darrick J. Wong wrote:
> Hrm.  Nothing in fstests uses it AFAICT so maybe we could just get rid
> of the -m option.  Or we could redefine "all" to map to ~1U so it
> actually does what that word means?

The latter sounds reasonable to me.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-04-23 15:44 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-16  5:21 [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Darrick J. Wong
2025-04-16  5:22 ` [PATCH 2/2] xfs_io: make statx mask parsing more generally useful Darrick J. Wong
2025-04-16  9:50   ` Andrey Albershteyn
2025-04-22  6:21   ` Christoph Hellwig
2025-04-23 15:33     ` Darrick J. Wong
2025-04-23 15:44       ` Christoph Hellwig
2025-04-16  9:15 ` [PATCH 1/2] xfs_io: catch statx fields up to 6.15 Andrey Albershteyn
2025-04-22  6:15 ` Christoph Hellwig
2025-04-23 15:31   ` Darrick J. Wong
2025-04-23 15:44     ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox