Changing FAT label of mounted file system
Subsystems (2)
Hello!
On most file system it is possible to change its label at anytime, when mounted or unmounted. But FAT is such special file system on which is label stored in two location, plus one is in directory structure (which cannot be modified when file system is mounted).
I would like to ask what about providing FAT specific IOCTL for vfat kernel driver which would allow to change volume label?
Currently vfat provides FAT_IOCTL_GET_VOLUME_ID which returns volume serial number, so in similar way it could be extended to provide FAT_IOCTL_GET_VOLUME_LABEL and FAT_IOCTL_SET_VOLUME_LABEL.
Now when partition manager program wants to change label of FAT partition, it first needs to unmount it, then change label and after that mount it again. Providing IOCTL would help partition manager programs to implement operation for changing volume label easier. Also unmounting partition is now always possible (when busy).
Next typical usage is opening file manager and in its window "renaming" volume label. Currently such thing is not possible to implement (without hacks) for FAT as once file manager has opened location of FAT partition it needs to be mounted -- and changing volume label is not possible.
Other file systems do not have this problem as label is not stored in directory structure, managed by kernel driver.
Signature · 2 lines
Pali Rohár [email protected]
Quoted 1 line · Pali Roh�r
Hello!
Hi,
Quoted 7 lines
On most file system it is possible to change its label at anytime, when mounted or unmounted. But FAT is such special file system on which is label stored in two location, plus one is in directory structure (which cannot be modified when file system is mounted).
I would like to ask what about providing FAT specific IOCTL for vfat kernel driver which would allow to change volume label?
I have no objection to add this ioctl though, there is really needs of apps?
For example, ext4's volume name is sb->s_volume_name, right? And no ioctl to change it, so I guess the app does read-modify-write superblock. If so, there is theoretical race with umount and super block update of ext4 (yes, although updating superblock is rare timing). So ext4 is unsafe actually to rewrite volume_name on the mounted fs.
Well, anyway, if there is the patch to add ioctl, again, I have no objection.
Thanks.
Signature · 1 line
OGAWA Hirofumi <[email protected]>
Quoted 11 lines · On Wednesday 06 September 2017 00:35:10 OGAWA Hirofumi wrote:
Quoted 1 line · Pali Rohár
Hello!
Hi,
Quoted 5 lines
On most file system it is possible to change its label at anytime, when mounted or unmounted. But FAT is such special file system on which is label stored in two location, plus one is in directory structure (which cannot be modified when file system is mounted).
Quoted 5 lines
Quoted 2 lines
I would like to ask what about providing FAT specific IOCTL for vfat kernel driver which would allow to change volume label?
I have no objection to add this ioctl though, there is really needs of apps?
Lets ask other people, maintainers of the GUI & command line tools which are already used by lot of users.
Andrius, Curtis and Andreas, what do you think?
Quoted 5 lines
For example, ext4's volume name is
sb->s_volume_name, right? And no ioctl to change it, so I guess the app does read-modify-write superblock. If so, there is theoretical race with umount and super block update of ext4 (yes, although updating superblock is rare timing). So ext4 is unsafe actually to rewritevolume_nameon the mounted fs.
You are right. But IIRC in the worst case label of ext4 would not be changed (overwritten by the old label when kernel ext4 driver changes superblock).
Quoted 4 lines
Well, anyway, if there is the patch to add ioctl, again, I have no objection.
Thanks.
Signature · 2 lines
Pali Rohár [email protected]