[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.