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

Jan Kara jack@suse.cz
Wed Jan 24 17:01:53 CET 2024


On Wed 24-01-24 13:21:30, Petr Vorel 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>

Thanks for looking into this. So EOPNOTSUPP is expected with a
FAN_MARK_FILESYSTEM because exfat does not have export operations and thus
cannot decode file handles (which is needed for sensible use of filesystem
marks). 

I think we should just ignore this failure in the test. Amir?

								Honza

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


More information about the ltp mailing list