public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [LTP] [PATCH 1/1] ioctl_ficlone03.c: Support test on more filesystems
       [not found] ` <aHEccDO8lJiTzbEs@yuki.lan>
@ 2025-07-22 10:23   ` Petr Vorel
  2025-07-22 11:41     ` Jan Kara
  0 siblings, 1 reply; 3+ messages in thread
From: Petr Vorel @ 2025-07-22 10:23 UTC (permalink / raw)
  To: linux-ext4; +Cc: ltp, Cyril Hrubis, Theodore Ts'o, Andreas Dilger, Jan Kara

Hi ext devs,

...
> >  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.

	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?

There is not any info in dmesg.

Thanks for any hint.

Kind regards,
Petr

[1] https://patchwork.ozlabs.org/project/ltp/patch/20250326142259.50981-1-pvorel@suse.cz/
[2] https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/syscalls/ioctl/ioctl_ficlone03.c
[3] https://lore.kernel.org/ltp/aHEccDO8lJiTzbEs@yuki.lan/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [LTP] [PATCH 1/1] ioctl_ficlone03.c: Support test on more filesystems
  2025-07-22 10:23   ` [LTP] [PATCH 1/1] ioctl_ficlone03.c: Support test on more filesystems Petr Vorel
@ 2025-07-22 11:41     ` Jan Kara
  2025-07-22 13:50       ` Petr Vorel
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Kara @ 2025-07-22 11:41 UTC (permalink / raw)
  To: Petr Vorel
  Cc: linux-ext4, ltp, Cyril Hrubis, Theodore Ts'o, Andreas Dilger,
	Jan Kara

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@suse.com>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [LTP] [PATCH 1/1] ioctl_ficlone03.c: Support test on more filesystems
  2025-07-22 11:41     ` Jan Kara
@ 2025-07-22 13:50       ` Petr Vorel
  0 siblings, 0 replies; 3+ messages in thread
From: Petr Vorel @ 2025-07-22 13:50 UTC (permalink / raw)
  To: Jan Kara
  Cc: linux-ext4, ltp, Cyril Hrubis, Theodore Ts'o, Andreas Dilger,
	Jan Kara

Hi Jan, all,

> 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 ;)

Lol, I should have git grep kernel sources and google before asking silly
question :). Thanks for correcting me.

> > 	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.

Thanks for info, obviously there is no problem now :).
I'll amend the commit message before merge that FICLONE and FICLONERANGE are not
supported (not FS_IMMUTABLE_FL).

Kind regards,
Petr

> 								Honza

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-07-22 13:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20250326142259.50981-1-pvorel@suse.cz>
     [not found] ` <aHEccDO8lJiTzbEs@yuki.lan>
2025-07-22 10:23   ` [LTP] [PATCH 1/1] ioctl_ficlone03.c: Support test on more filesystems Petr Vorel
2025-07-22 11:41     ` Jan Kara
2025-07-22 13:50       ` Petr Vorel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox