[LTP] [PATCH 1/1] fanotify: Handle EOPNOTSUPP as TCONF

Petr Vorel pvorel@suse.cz
Wed Jan 24 16:33:47 CET 2024


> On Wed, Jan 24, 2024 at 2:21 PM Petr Vorel <pvorel@suse.cz> wrote:

> > Found on kernel 6.7 (Tumbleweed) on exfat:

> > tst_test.c:1669: TINFO: === Testing on exfat ===
> > tst_test.c:1117: TINFO: Formatting /dev/loop1 with exfat opts='' extra opts=''
> > tst_test.c:1131: TINFO: Mounting /dev/loop1 to /tmp/LTP_fanoL9KLE/mntpoint fstyp=exfat flags=0
> > fanotify14.c:246: TINFO: Test case 0: fanotify_init(FAN_CLASS_CONTENT | FAN_REPORT_FID, O_RDONLY)
> > fanotify14.c:260: TPASS: fanotify_init(tc->init.flags, O_RDONLY) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 1: fanotify_init(FAN_CLASS_PRE_CONTENT | FAN_REPORT_FID, O_RDONLY)
> > fanotify14.c:260: TPASS: fanotify_init(tc->init.flags, O_RDONLY) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 2: fanotify_init(FAN_CLASS_NOTIF, O_RDONLY)
> > fanotify14.c:263: TPASS: fanotify_init(tc->init.flags, O_RDONLY) returned fd 5
> > fanotify14.c:283: TINFO: Testing FAN_MARK_INODE with INODE_EVENTS
> > fanotify14.c:285: TPASS: fanotify_mark(fanotify_fd, 0x00000001 | tc->mark.flags, tc->mask.flags, dirfd, path) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 3: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_FID, O_RDONLY)
> > fanotify14.c:263: TPASS: fanotify_init(tc->init.flags, O_RDONLY) returned fd 5
> > fanotify14.c:283: TINFO: Testing FAN_MARK_MOUNT with INODE_EVENTS
> > fanotify14.c:285: TPASS: fanotify_mark(fanotify_fd, 0x00000001 | tc->mark.flags, tc->mask.flags, dirfd, path) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 4: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_NAME, O_RDONLY)
> > fanotify14.c:260: TPASS: fanotify_init(tc->init.flags, O_RDONLY) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 5: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_FID | FAN_REPORT_NAME, O_RDONLY)
> > fanotify14.c:260: TPASS: fanotify_init(tc->init.flags, O_RDONLY) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 6: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_TARGET_FID | FAN_REPORT_DFID_NAME, O_RDONLY)
> > fanotify14.c:260: TPASS: fanotify_init(tc->init.flags, O_RDONLY) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 7: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_TARGET_FID | FAN_REPORT_DFID_FID, O_RDONLY)
> > fanotify14.c:260: TPASS: fanotify_init(tc->init.flags, O_RDONLY) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 8: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_DFID_FID, O_RDONLY)
> > fanotify14.c:263: TPASS: fanotify_init(tc->init.flags, O_RDONLY) returned fd 5
> > fanotify14.c:283: TINFO: Testing FAN_MARK_INODE with FAN_RENAME
> > fanotify14.c:285: TPASS: fanotify_mark(fanotify_fd, 0x00000001 | tc->mark.flags, tc->mask.flags, dirfd, path) : EINVAL (22)
> > fanotify14.c:246: TINFO: Test case 9: fanotify_init(FAN_CLASS_NOTIF, O_RDONLY)
> > fanotify14.c:263: TPASS: fanotify_init(tc->init.flags, O_RDONLY) returned fd 5
> > fanotify14.c:283: TINFO: Testing FAN_MARK_ONLYDIR with FAN_OPEN
> > fanotify14.c:285: TPASS: fanotify_mark(fanotify_fd, 0x00000001 | tc->mark.flags, tc->mask.flags, dirfd, path) : ENOTDIR (20)
> > fanotify14.c:298: TPASS: Adding an inode mark on directory did not fail with ENOTDIR error as on non-dir inode
> > fanotify14.c:246: TINFO: Test case 10: fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_DFID_NAME_TARGET, O_RDONLY)
> > fanotify14.c:263: TPASS: fanotify_init(tc->init.flags, O_RDONLY) returned fd 5
> > fanotify14.c:283: TINFO: Testing FAN_MARK_INODE with FAN_DELETE
> > fanotify14.c:285: TPASS: fanotify_mark(fanotify_fd, 0x00000001 | tc->mark.flags, tc->mask.flags, dirfd, path) : ENOTDIR (20)
> > fanotify14.c:298: TPASS: Adding an inode mark on directory did not fail with ENOTDIR error as on non-dir inode
> > fanotify14.c:303: TBROK: fanotify_mark(5, 0x101, 0x200, ..., mntpoint/file1) unsupported: EOPNOTSUPP (95)

> > Reported-by: Dominique Leuenberger <dleuenberger@suse.com>
> > Signed-off-by: Petr Vorel <pvorel@suse.cz>
> > ---
> > Hi,

> > I wonder, if this is a bug or not.

> > Kind regards,
> > Petr

> >  testcases/kernel/syscalls/fanotify/fanotify.h | 12 +++++++++---
> >  1 file changed, 9 insertions(+), 3 deletions(-)

> > diff --git a/testcases/kernel/syscalls/fanotify/fanotify.h b/testcases/kernel/syscalls/fanotify/fanotify.h
> > index e0d178bcc..dd1f5c84c 100644
> > --- a/testcases/kernel/syscalls/fanotify/fanotify.h
> > +++ b/testcases/kernel/syscalls/fanotify/fanotify.h
> > @@ -47,9 +47,15 @@ static inline int safe_fanotify_mark(const char *file, const int lineno,
> >         rval = fanotify_mark(fd, flags, mask, dfd, pathname);

> >         if (rval == -1) {
> > -               tst_brk_(file, lineno, TBROK | TERRNO,
> > -                        "fanotify_mark(%d, 0x%x, 0x%lx, ..., %s) failed",
> > -                        fd, flags, mask, pathname);
> > +               if (errno == EOPNOTSUPP) {
> > +                       tst_brk_(file, lineno, TCONF | TERRNO,
> > +                                        "fanotify_mark(%d, 0x%x, 0x%lx, ..., %s) unsupported",
> > +                                        fd, flags, mask, pathname);
> > +               } else {
> > +                       tst_brk_(file, lineno, TBROK | TERRNO,
> > +                                        "fanotify_mark(%d, 0x%x, 0x%lx, ..., %s) failed",
> > +                                        fd, flags, mask, pathname);
> > +               }
> >         }

> >         if (rval < -1) {
> > --
> > 2.43.0


Hi Amir,

> Petr,

> I don't think this is the right fix.

> Am I correct to assume that exfat was skipped in this test prior
> to v6.8-rc1?
> 30ad1938326b fanotify: allow "weak" fsid when watching a single filesystem

Yes, it was skipped on 6.6:

tst_test.c:1669: TINFO: === Testing on exfat ===
tst_test.c:1117: TINFO: Formatting /dev/loop0 with exfat opts='' extra opts=''
tst_test.c:1131: TINFO: Mounting /dev/loop0 to /tmp/LTP_fany7fl22/mntpoint fstyp=exfat flags=0
fanotify14.c:323: TCONF: FAN_REPORT_FID not supported on exfat filesystem

> I have prepared a branch to test the v6.8-rc1 fanotify changes:

> https://github.com/amir73il/ltp/commits/fanotify_fsid/

> Normally, I post the tests much later in the a release cycle, but the changes
> in v6.8-rc1 will cause several new filesystems (e.g. fuse-ntfs3) to start
> running the fanotify tests, so we may need to merge some of those test
> fixes sooner.

+1

> Can you please test if the changes in my branch fix this test failure.
> Let me know if you need me to post the changes for review.

Yes, this your branch fanotify_fsid works on 6.7 from Tumbleweed.
Even cherry picking the commit 3fc9493eb ("fanotify{14,15,16}: Check for
filesystem mark support on filesystem") would be enough for now.

I can even do it without you sending a patch, if it's ok for you
(linking this discussion).

Kind regards,
Petr

> As far as I can see, only the change:
> 35f49a9cb fanotify01: Test setting two marks on different filesystems

> tests for new v6.8-rc1 functionality, but it should not affect running the
> test on older kernels, where the affected filesystems are skipped anyway.

> Thanks,
> Amir.


More information about the ltp mailing list