[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <865af278-e7c1-4e62-83ce-56f7ce6f7aba@infradead.org>
Date: Tue, 6 Feb 2024 12:29:36 -0800
From: Randy Dunlap <rdunlap@...radead.org>
To: Kent Overstreet <kent.overstreet@...ux.dev>, brauner@...nel.org,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: Jan Kara <jack@...e.cz>, Dave Chinner <dchinner@...hat.com>,
"Darrick J. Wong" <djwong@...nel.org>, Theodore Ts'o <tytso@....edu>,
linux-fsdevel@...r.kernel.or
Subject: Re: [PATCH v2 3/7] fs: FS_IOC_GETUUID
On 2/6/24 12:18, Kent Overstreet wrote:
> Add a new generic ioctls for querying the filesystem UUID.
>
> These are lifted versions of the ext4 ioctls, with one change: we're not
> using a flexible array member, because UUIDs will never be more than 16
> bytes.
>
> This patch adds a generic implementation of FS_IOC_GETFSUUID, which
> reads from super_block->s_uuid. We're not lifting SETFSUUID from ext4 -
> that can be done on offline filesystems by the people who need it,
> trying to do it online is just asking for too much trouble.
>
> Cc: Christian Brauner <brauner@...nel.org>
> Cc: Jan Kara <jack@...e.cz>
> Cc: Dave Chinner <dchinner@...hat.com>
> Cc: "Darrick J. Wong" <djwong@...nel.org>
> Cc: Theodore Ts'o <tytso@....edu>
> Cc: linux-fsdevel@...r.kernel.or
> Signed-off-by: Kent Overstreet <kent.overstreet@...ux.dev>
> ---
> fs/ioctl.c | 16 ++++++++++++++++
> include/uapi/linux/fs.h | 17 +++++++++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h
> index 48ad69f7722e..16a6ecadfd8d 100644
> --- a/include/uapi/linux/fs.h
> +++ b/include/uapi/linux/fs.h
> @@ -64,6 +64,19 @@ struct fstrim_range {
> __u64 minlen;
> };
>
> +/*
> + * We include a length field because some filesystems (vfat) have an identifier
> + * that we do want to expose as a UUID, but doesn't have the standard length.
> + *
> + * We use a fixed size buffer beacuse this interface will, by fiat, never
because
> + * support "UUIDs" longer than 16 bytes; we don't want to force all downstream
> + * users to have to deal with that.
> + */
> +struct fsuuid2 {
> + __u8 len;
> + __u8 uuid[16];
> +};
> +
> /* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */
> #define FILE_DEDUPE_RANGE_SAME 0
> #define FILE_DEDUPE_RANGE_DIFFERS 1
> @@ -190,6 +203,9 @@ struct fsxattr {
> * (see uapi/linux/blkzoned.h)
> */
>
> +/* Returns the external filesystem UUID, the same one blkid returns */
> +#define FS_IOC_GETFSUUID _IOR(0x12, 142, struct fsuuid2)
> +
> #define BMAP_IOCTL 1 /* obsolete - kept for compatibility */
> #define FIBMAP _IO(0x00,1) /* bmap access */
> #define FIGETBSZ _IO(0x00,2) /* get the block size used for bmap */
> @@ -198,6 +214,7 @@ struct fsxattr {
> #define FITRIM _IOWR('X', 121, struct fstrim_range) /* Trim */
> #define FICLONE _IOW(0x94, 9, int)
> #define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
> +
> #define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
Why the additional blank line? (nit)
>
> #define FSLABEL_MAX 256 /* Max chars for the interface; each fs may differ */
--
#Randy
Powered by blists - more mailing lists