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

Petr Vorel pvorel@suse.cz
Wed Jan 24 17:58:10 CET 2024


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

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

> Ah yes, this is because 6.7 has commit:

> 64343119d7b8 exportfs: support encoding non-decodeable file handles by default

> This is different form the one I mentioned for v6.8-rc1


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


> Perfectly fine by me.

> But note that you need the rest of the fixes to avoid test failures with
> fuse (e.g. fuse-ntfs3g) on v6.8-rc1 - if you care about LTP results on
> latest rc kernel.

OK, in that case I merge whole branch tonight.

Kind regards,
Petr

> Thanks,
> Amir.


More information about the ltp mailing list