Hi! On Tue 22-07-25 12:23:46, Petr Vorel wrote: > ... > > > static void setup(void) > > > I find it strange that we manage to set the FS_IMMUTABLE_FL in the setup > > with the FS_IOC_SETFLAGS without any error. Maybe it would make sense to > > check with ext devs what is going on here. > > > > @@ -117,6 +123,10 @@ static struct tst_test test = { > > > .mkfs_ver = "mkfs.xfs >= 1.5.0", > > > .mkfs_opts = (const char *const []) {"-m", "reflink=1", NULL}, > > > }, > > > + {.type = "ext2"}, > > > + {.type = "ext3"}, > > > + {.type = "ext4"}, > > > + {.type = "tmpfs"}, > > > {} > > While I was working on extending [1] LTP ioctl_ficlone03.c to run on more > filesystems [2], I found that ext[2-4] don't support FS_IMMUTABLE_FL. Why do you think FS_IMMUTABLE_FL is unsupported? ext2 was the filesystem actually introducing it to the kernel ;) > immut_fd = open(MNTPOINT"/immutable", O_CREAT | O_RDWR, 0640); > mnt_file = open(MNTPOINT"/file", O_CREAT | O_RDWR, 0640); > int attr = FS_IMMUTABLE_FL; > ioctl(immut_fd, FS_IOC_SETFLAGS, &attr); > ... > > struct file_clone_range *clone_range; > ioctl(immut_fd, FICLONE, mnt_file), > ioctl(immut_fd, FICLONERANGE, clone_range), > > The last two ioctl() with FICLONE and FICLONERANGE get errno EOPNOTSUPP > (instead of EPERM as on other fs). Cyril raised concern [3], why first > ioctl() FS_IOC_SETFLAGS even works. Shouldn't it also gets EINVAL as > vfat, exfat and ntfs get? Unlink FICLONE and FICLONERANGE which are indeed unsupported on any ext? based filesystem so EOPNOTSUPP seems like a correct answer to me. So I'm confused where you see a problem. Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR