Re: [PATCH v6 4/6] fs: make vfs_fileattr_[get|set] return -EOPNOSUPP
From: Jan Kara <jack@suse.cz>
Date: 2025-10-06 15:39:53
Also in:
linux-fsdevel, linux-xfs, lkml, selinux
On Mon 06-10-25 13:09:05, Jiri Slaby wrote:
On 30. 06. 25, 18:20, Andrey Albershteyn wrote:quoted
Future patches will add new syscalls which use these functions. As this interface won't be used for ioctls only, the EOPNOSUPP is more appropriate return code. This patch converts return code from ENOIOCTLCMD to EOPNOSUPP for vfs_fileattr_get and vfs_fileattr_set. To save old behavior translate EOPNOSUPP back for current users - overlayfs, encryptfs and fs/ioctl.c. Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>...quoted
@@ -292,6 +294,8 @@ int ioctl_setflags(struct file *file, unsigned int __user *argp) fileattr_fill_flags(&fa, flags); err = vfs_fileattr_set(idmap, dentry, &fa); mnt_drop_write_file(file); + if (err == -EOPNOTSUPP) + err = -ENOIOCTLCMD;This breaks borg code (unit tests already) as it expects EOPNOTSUPP, not ENOIOCTLCMD/ENOTTY: https://github.com/borgbackup/borg/blob/1c6ef7a200c7f72f8d1204d727fea32168616ceb/src/borg/platform/linux.pyx#L147 I.e. setflags now returns ENOIOCTLCMD/ENOTTY for cases where 6.16 used to return EOPNOTSUPP. This minimal testcase program doing ioctl(fd2, FS_IOC_SETFLAGS, &FS_NODUMP_FL): https://github.com/jirislaby/collected_sources/tree/master/ioctl_setflags dumps in 6.16: sf: ioctl: Operation not supported with the above patch: sf: ioctl: Inappropriate ioctl for device Is this expected?
No, that's a bug and a clear userspace regression so we need to fix it. I think we need to revert this commit and instead convert ENOIOCTLCMD from vfs_fileattr_get/set() to EOPNOTSUPP in appropriate places. Andrey? Honza -- Jan Kara [off-list ref] SUSE Labs, CR