Commit 4a4083af authored by Namhyung Kim's avatar Namhyung Kim
Browse files

tools headers: Sync uapi/linux/fs.h with the kernel source



To pick up the changes in this cset:

  76fdb7eb uapi: export PROCFS_ROOT_INO
  ca115d7e tree-wide: s/struct fileattr/struct file_kattr/g
  be7efb2d fs: introduce file_getattr and file_setattr syscalls
  9eb22f7f fs: add ioctl to query metadata and protection info capabilities

This addresses these perf build warnings:

  Warning: Kernel ABI header differences:
    diff -u tools/perf/trace/beauty/include/uapi/linux/fs.h include/uapi/linux/fs.h

Please see tools/include/uapi/README for further details.

Cc: Christian Brauner <brauner@kernel.org>
Cc: linux-fsdevel@vger.kernel.org
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent b18aabe2
Loading
Loading
Loading
Loading
+88 −0
Original line number Diff line number Diff line
@@ -60,6 +60,17 @@
#define RENAME_EXCHANGE		(1 << 1)	/* Exchange source and dest */
#define RENAME_WHITEOUT		(1 << 2)	/* Whiteout source */

/*
 * The root inode of procfs is guaranteed to always have the same inode number.
 * For programs that make heavy use of procfs, verifying that the root is a
 * real procfs root and using openat2(RESOLVE_{NO_{XDEV,MAGICLINKS},BENEATH})
 * will allow you to make sure you are never tricked into operating on the
 * wrong procfs file.
 */
enum procfs_ino {
	PROCFS_ROOT_INO = 1,
};

struct file_clone_range {
	__s64 src_fd;
	__u64 src_offset;
@@ -91,6 +102,63 @@ struct fs_sysfs_path {
	__u8			name[128];
};

/* Protection info capability flags */
#define	LBMD_PI_CAP_INTEGRITY		(1 << 0)
#define	LBMD_PI_CAP_REFTAG		(1 << 1)

/* Checksum types for Protection Information */
#define LBMD_PI_CSUM_NONE		0
#define LBMD_PI_CSUM_IP			1
#define LBMD_PI_CSUM_CRC16_T10DIF	2
#define LBMD_PI_CSUM_CRC64_NVME		4

/* sizeof first published struct */
#define LBMD_SIZE_VER0			16

/*
 * Logical block metadata capability descriptor
 * If the device does not support metadata, all the fields will be zero.
 * Applications must check lbmd_flags to determine whether metadata is
 * supported or not.
 */
struct logical_block_metadata_cap {
	/* Bitmask of logical block metadata capability flags */
	__u32	lbmd_flags;
	/*
	 * The amount of data described by each unit of logical block
	 * metadata
	 */
	__u16	lbmd_interval;
	/*
	 * Size in bytes of the logical block metadata associated with each
	 * interval
	 */
	__u8	lbmd_size;
	/*
	 * Size in bytes of the opaque block tag associated with each
	 * interval
	 */
	__u8	lbmd_opaque_size;
	/*
	 * Offset in bytes of the opaque block tag within the logical block
	 * metadata
	 */
	__u8	lbmd_opaque_offset;
	/* Size in bytes of the T10 PI tuple associated with each interval */
	__u8	lbmd_pi_size;
	/* Offset in bytes of T10 PI tuple within the logical block metadata */
	__u8	lbmd_pi_offset;
	/* T10 PI guard tag type */
	__u8	lbmd_guard_tag_type;
	/* Size in bytes of the T10 PI application tag */
	__u8	lbmd_app_tag_size;
	/* Size in bytes of the T10 PI reference tag */
	__u8	lbmd_ref_tag_size;
	/* Size in bytes of the T10 PI storage tag */
	__u8	lbmd_storage_tag_size;
	__u8	pad;
};

/* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */
#define FILE_DEDUPE_RANGE_SAME		0
#define FILE_DEDUPE_RANGE_DIFFERS	1
@@ -148,6 +216,24 @@ struct fsxattr {
	unsigned char	fsx_pad[8];
};

/*
 * Variable size structure for file_[sg]et_attr().
 *
 * Note. This is alternative to the structure 'struct file_kattr'/'struct fsxattr'.
 * As this structure is passed to/from userspace with its size, this can
 * be versioned based on the size.
 */
struct file_attr {
	__u64 fa_xflags;	/* xflags field value (get/set) */
	__u32 fa_extsize;	/* extsize field value (get/set)*/
	__u32 fa_nextents;	/* nextents field value (get)   */
	__u32 fa_projid;	/* project identifier (get/set) */
	__u32 fa_cowextsize;	/* CoW extsize field value (get/set) */
};

#define FILE_ATTR_SIZE_VER0 24
#define FILE_ATTR_SIZE_LATEST FILE_ATTR_SIZE_VER0

/*
 * Flags for the fsx_xflags field
 */
@@ -247,6 +333,8 @@ struct fsxattr {
 * also /sys/kernel/debug/ for filesystems with debugfs exports
 */
#define FS_IOC_GETFSSYSFSPATH		_IOR(0x15, 1, struct fs_sysfs_path)
/* Get logical block metadata capability details */
#define FS_IOC_GETLBMD_CAP		_IOWR(0x15, 2, struct logical_block_metadata_cap)

/*
 * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)