Re: [PATCH 2/3] tools headers UAPI: Sync linux/fs.h with the kernel sources

From: Lorenzo Stoakes
Date: Mon Mar 31 2025 - 07:27:44 EST


On Mon, Mar 24, 2025 at 06:53:27AM +0000, Andrei Vagin wrote:
> From: Andrei Vagin <avagin@xxxxxxxxx>
>
> Required for a new PAGEMAP_SCAN test to verify guard region reporting.
>
> Signed-off-by: Andrei Vagin <avagin@xxxxxxxxx>

Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>

> ---
> tools/include/uapi/linux/fs.h | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/tools/include/uapi/linux/fs.h b/tools/include/uapi/linux/fs.h
> index 8a27bc5c7a7f..24ddf7bc4f25 100644
> --- a/tools/include/uapi/linux/fs.h
> +++ b/tools/include/uapi/linux/fs.h
> @@ -40,6 +40,15 @@
> #define BLOCK_SIZE_BITS 10
> #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
>
> +/* flags for integrity meta */
> +#define IO_INTEGRITY_CHK_GUARD (1U << 0) /* enforce guard check */
> +#define IO_INTEGRITY_CHK_REFTAG (1U << 1) /* enforce ref check */
> +#define IO_INTEGRITY_CHK_APPTAG (1U << 2) /* enforce app check */
> +
> +#define IO_INTEGRITY_VALID_FLAGS (IO_INTEGRITY_CHK_GUARD | \
> + IO_INTEGRITY_CHK_REFTAG | \
> + IO_INTEGRITY_CHK_APPTAG)
> +
> #define SEEK_SET 0 /* seek relative to beginning of file */
> #define SEEK_CUR 1 /* seek relative to current file position */
> #define SEEK_END 2 /* seek relative to end of file */
> @@ -329,9 +338,16 @@ typedef int __bitwise __kernel_rwf_t;
> /* per-IO negation of O_APPEND */
> #define RWF_NOAPPEND ((__force __kernel_rwf_t)0x00000020)
>
> +/* Atomic Write */
> +#define RWF_ATOMIC ((__force __kernel_rwf_t)0x00000040)
> +
> +/* buffered IO that drops the cache after reading or writing data */
> +#define RWF_DONTCACHE ((__force __kernel_rwf_t)0x00000080)
> +
> /* mask of flags supported by the kernel */
> #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\
> - RWF_APPEND | RWF_NOAPPEND)
> + RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC |\
> + RWF_DONTCACHE)
>
> #define PROCFS_IOCTL_MAGIC 'f'
>
> @@ -347,6 +363,7 @@ typedef int __bitwise __kernel_rwf_t;
> #define PAGE_IS_PFNZERO (1 << 5)
> #define PAGE_IS_HUGE (1 << 6)
> #define PAGE_IS_SOFT_DIRTY (1 << 7)
> +#define PAGE_IS_GUARD (1 << 8)
>
> /*
> * struct page_region - Page region with flags
> --
> 2.49.0.395.g12beb8f557-goog
>