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

Amir Goldstein amir73il@gmail.com
Wed Jan 24 17:05:22 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.

Thanks,
Amir.


More information about the ltp mailing list