Thread (11 messages) 11 messages, 4 authors, 2022-07-20

Re: [PATCH v4] Add ioctls to get/set the ext4 superblock uuid.

flat view

From: Matthew Wilcox <willy@infradead.org>
Date: 2022-07-20 14:11:29
Also in: linux-ext4, linux-fsdevel

On Tue, Jul 19, 2022 at 08:30:57PM -0700, Darrick J. Wong wrote:
On Wed, Jul 20, 2022 at 04:18:51AM +0100, Matthew Wilcox wrote:
quoted
On Tue, Jul 19, 2022 at 04:41:31PM -0700, Jeremy Bongio wrote:
quoted
+/*
+ * Structure for EXT4_IOC_GETFSUUID/EXT4_IOC_SETFSUUID
+ */
+struct fsuuid {
+	__u32       fsu_len;
+	__u32       fsu_flags;
+	__u8        fsu_uuid[];
+};
A UUID has a defined size (128 bits):
https://en.wikipedia.org/wiki/Universally_unique_identifier

Why are we defining flags and len?
@flags because XFS actually need to add a superblock feature bit
(meta_uuid) to change the UUID while the fs is mounted.  That kind of
change can break backwards compatiblity, so we might want to make
*absolutely sure* that the sysadmin is aware of this:
OK.  So we'll define a 'force' flag at some point in the future.  Got it.
@len because some filesystems like vfat have volume identifiers that
aren't actually UUIDs (they're u32); some day someone might want to port
vfat to implement at least the GETFSUUID part (they already have
FAT_IOCTL_GET_VOLUME_ID); and given the amount of confusion that results
when buffer lengths are implied (see [GS]ETFSLABEL) I'd rather this pair
of ioctls be explicit about the buffer length now rather than deal with
the fallout of omitting it now and regretting it later.
Uhhh.  So what are the semantics of len?  That is, on SET, what does
a filesystem do if userspace says "Here's 8 bytes" but the filesystem
usually uses 16 bytes?  What does the same filesystem do if userspace
offers it 32 bytes?  If the answer is "returns -EINVAL", how does
userspace discover what size of volume ID is acceptable to a particular
filesystem?

And then, on GET, does 'len' just mean "here's the length of the buffer,
put however much will fit into it"?  Should filesystems update it to
inform userspace how much was transferred?

I think there was mention of a manpage earlier.  And if this is truly
for "volume ID" instead of "UUID", then lets call it "volume ID" and
not "UUID" to prevent confusion.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help