Re: [PATCH v2] generic/791: don't run if kernel misses FANOTIFY
"Darrick J. Wong" <[email protected]>
| Newsgroups | org.kernel.vger.fstests |
|---|---|
| Message-ID | <20260521144730.GR9568@frogsfrogsfrogs> |
On Thu, May 21, 2026 at 10:26:46AM +0200, Andrey Albershteyn wrote: > 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 <[email protected]> > --- > Changes from v1: > - Remove returning of errno > - Instead of checking for error code add new -c argument to fs-monitor Looks good to me now! Reviewed-by: "Darrick J. Wong" <[email protected]> --D > > --- > src/fs-monitor.c | 19 ++++++++++++++++++- > tests/generic/791 | 3 +++ > 2 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/src/fs-monitor.c b/src/fs-monitor.c > index 0cf09677a3ef..dd91a5d7f623 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 90242292cba2..edefbb7767c3 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) > -- > 2.51.2 >