From: Andrey Albershteyn Date: Thu, 21 May 2026 08:26:46 +0000 (+0200) Subject: generic/791: don't run if kernel misses FANOTIFY X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c1dcfe62b3f95d323224e9b8087ab0e6df69c993;p=xfstests-dev.git generic/791: don't run if kernel misses FANOTIFY If FANOTIFY=no in the kernel, then fs-monitor will fail to start. Fix fs-monitor error codes to detect and skip the test on "Function not implemented" code. Signed-off-by: Andrey Albershteyn Reviewed-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig Signed-off-by: Zorro Lang --- diff --git a/src/fs-monitor.c b/src/fs-monitor.c index 0cf09677..dd91a5d7 100644 --- a/src/fs-monitor.c +++ b/src/fs-monitor.c @@ -117,6 +117,8 @@ next_event: int main(int argc, char **argv) { int fd; + int opt; + int check = 0; char buffer[BUFSIZ]; @@ -125,14 +127,29 @@ int main(int argc, char **argv) return 1; } + while ((opt = getopt(argc, argv, "c")) != -1) { + switch (opt) { + case 'c': + check = 1; + break; + default: + fprintf(stderr, "Usage: %s [-c] path\n", + argv[0]); + exit(EXIT_FAILURE); + } + } + fd = fanotify_init(FAN_CLASS_NOTIF|FAN_REPORT_FID, O_RDONLY); + if (check) + exit(fd < 0); + if (fd < 0) { perror("fanotify_init"); errx(1, "fanotify_init"); } if (fanotify_mark(fd, FAN_MARK_ADD|FAN_MARK_FILESYSTEM, - FAN_FS_ERROR, AT_FDCWD, argv[1])) { + FAN_FS_ERROR, AT_FDCWD, argv[optind])) { perror("fanotify_mark"); errx(1, "fanotify_mark"); } diff --git a/tests/generic/791 b/tests/generic/791 index 90242292..edefbb77 100755 --- a/tests/generic/791 +++ b/tests/generic/791 @@ -65,6 +65,9 @@ _dmerror_mount >> $seqres.full 2>&1 test $FSTYP = xfs && _xfs_force_bdev data $SCRATCH_MNT +$here/src/fs-monitor -c $SCRATCH_MNT &> /dev/null || \ + _notrun "fanotify too old" + # Write a file with 4 file blocks worth of data, figure out the LBA to target victim=$SCRATCH_MNT/a file_blksz=$(_get_file_block_size $SCRATCH_MNT)