[PATCH v2] generic/791: don't run if kernel misses FANOTIFY
Andrey Albershteyn <[email protected]>
| Newsgroups | org.kernel.vger.fstests |
|---|---|
| Message-ID | <[email protected]> |
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 --- 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