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

Amir Goldstein amir73il@gmail.com
Wed Jan 24 15:45:29 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
>

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

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.

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.

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