[PATCH] 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]>
---
 src/fs-monitor.c  |  9 ++++++---
 tests/generic/791 | 10 +++++++++-
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/fs-monitor.c b/src/fs-monitor.c
index 0cf09677a3ef..28436ec2336f 100644
--- a/src/fs-monitor.c
+++ b/src/fs-monitor.c
@@ -117,6 +117,7 @@ next_event:
 int main(int argc, char **argv)
 {
 	int fd;
+	int error;
 
 	char buffer[BUFSIZ];
 
@@ -126,15 +127,17 @@ int main(int argc, char **argv)
 	}
 
 	fd = fanotify_init(FAN_CLASS_NOTIF|FAN_REPORT_FID, O_RDONLY);
+	error = errno;
 	if (fd < 0) {
 		perror("fanotify_init");
-		errx(1, "fanotify_init");
+		errx(error, "fanotify_init");
 	}
 
 	if (fanotify_mark(fd, FAN_MARK_ADD|FAN_MARK_FILESYSTEM,
 			  FAN_FS_ERROR, AT_FDCWD, argv[1])) {
+		error = errno;
 		perror("fanotify_mark");
-		errx(1, "fanotify_mark");
+		errx(errno, "fanotify_mark");
 	}
 
 	printf("fanotify active\n");
@@ -144,7 +147,7 @@ int main(int argc, char **argv)
 		int n = read(fd, buffer, BUFSIZ);
 
 		if (n < 0)
-			errx(1, "read");
+			errx(errno, "read");
 
 		handle_notifications(buffer, n);
 	}
diff --git a/tests/generic/791 b/tests/generic/791
index 90242292cba2..1d3a6c181011 100755
--- a/tests/generic/791
+++ b/tests/generic/791
@@ -123,10 +123,18 @@ fi
 _dmerror_unmount
 _dmerror_mount
 
-$here/src/fs-monitor $SCRATCH_MNT > $tmp.fsmonitor &
+$here/src/fs-monitor $SCRATCH_MNT > $tmp.fsmonitor 2>&1 &
 fsmonitor_pid=$!
 sleep 1
 
+if ! kill -0 $fsmonitor_pid 2>/dev/null; then
+	wait $fsmonitor_pid
+	# Function not implemented
+	if [ $? -eq 38 ]; then
+		_notrun "Kernel doesn't support fanotify"
+	fi
+fi
+
 _dmerror_mark_range_bad $bad_sector $bad_len
 
 cat >> $seqres.full << ENDL
-- 
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.