Module Name:    src
Committed By:   pgoyette
Date:           Fri Apr 29 22:17:50 UTC 2022

Modified Files:
        src/distrib/sets/lists/debug: mi
        src/distrib/sets/lists/tests: mi
        src/etc/mtree: NetBSD.dist.tests
        src/tests/lib/libc: Makefile
Added Files:
        src/tests/lib/libc/kevent_nullmnt: Makefile h_nullmnt.c t_nullmnt.sh

Log Message:
Add a new test for PR kern/56713 and set to expected_failure for now.


To generate a diff of this commit:
cvs rdiff -u -r1.376 -r1.377 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.1200 -r1.1201 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.190 -r1.191 src/etc/mtree/NetBSD.dist.tests
cvs rdiff -u -r1.51 -r1.52 src/tests/lib/libc/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/lib/libc/kevent_nullmnt/Makefile \
    src/tests/lib/libc/kevent_nullmnt/h_nullmnt.c \
    src/tests/lib/libc/kevent_nullmnt/t_nullmnt.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/debug/mi
diff -u src/distrib/sets/lists/debug/mi:1.376 src/distrib/sets/lists/debug/mi:1.377
--- src/distrib/sets/lists/debug/mi:1.376	Fri Apr  8 23:35:51 2022
+++ src/distrib/sets/lists/debug/mi	Fri Apr 29 22:17:49 2022
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.376 2022/04/08 23:35:51 riastradh Exp $
+# $NetBSD: mi,v 1.377 2022/04/29 22:17:49 pgoyette Exp $
 ./etc/mtree/set.debug                           comp-sys-root
 ./usr/lib					comp-sys-usr		compatdir
 ./usr/lib/i18n/libBIG5_g.a			comp-c-debuglib		debuglib,compatfile
@@ -2041,6 +2041,7 @@
 ./usr/libdata/debug/usr/tests/lib/libc/ieeefp/t_subnormal.debug		tests-obsolete		obsolete,compattestfile
 ./usr/libdata/debug/usr/tests/lib/libc/inet/t_inet_addr.debug		tests-lib-debug		debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/lib/libc/inet/t_inet_network.debug	tests-lib-debug		debug,atf,compattestfile
+./usr/libdata/debug/usr/tests/lib/libc/kevent_nullmnt/h_nullmnt.debug	tests-lib-debug		debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/lib/libc/locale/t_btowc.debug		tests-lib-debug		debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/lib/libc/locale/t_ctype1.debug		tests-obsolete		obsolete,compattestfile
 ./usr/libdata/debug/usr/tests/lib/libc/locale/t_ctype2.debug		tests-obsolete		obsolete,compattestfile

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1200 src/distrib/sets/lists/tests/mi:1.1201
--- src/distrib/sets/lists/tests/mi:1.1200	Thu Apr 28 21:38:38 2022
+++ src/distrib/sets/lists/tests/mi	Fri Apr 29 22:17:50 2022
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1200 2022/04/28 21:38:38 rillig Exp $
+# $NetBSD: mi,v 1.1201 2022/04/29 22:17:50 pgoyette Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -103,6 +103,7 @@
 ./usr/libdata/debug/usr/tests/lib/libc/hash		tests-lib-debug		compattestfile,atf
 ./usr/libdata/debug/usr/tests/lib/libc/ieeefp		tests-obsolete		obsolete
 ./usr/libdata/debug/usr/tests/lib/libc/inet		tests-lib-debug		compattestfile,atf
+./usr/libdata/debug/usr/tests/lib/libc/kevent_nullmnt	tests-lib-debug		compattestfile,atf
 ./usr/libdata/debug/usr/tests/lib/libc/locale		tests-lib-debug		compattestfile,atf
 ./usr/libdata/debug/usr/tests/lib/libc/membar		tests-lib-debug		compattestfile,atf
 ./usr/libdata/debug/usr/tests/lib/libc/misc		tests-lib-debug		compattestfile,atf
@@ -2932,6 +2933,11 @@
 ./usr/tests/lib/libc/inet/Kyuafile			tests-lib-tests		compattestfile,atf,kyua
 ./usr/tests/lib/libc/inet/t_inet_addr			tests-lib-tests		compattestfile,atf
 ./usr/tests/lib/libc/inet/t_inet_network		tests-lib-tests		compattestfile,atf
+./usr/tests/lib/libc/kevent_nullmnt			tests-lib-tests		compattestfile,atf
+./usr/tests/lib/libc/kevent_nullmnt/Atffile		tests-lib-tests		compattestfile,atf
+./usr/tests/lib/libc/kevent_nullmnt/Kyuafile		tests-lib-tests		compattestfile,atf,kyua
+./usr/tests/lib/libc/kevent_nullmnt/h_nullmnt		tests-lib-tests		compattestfile,atf
+./usr/tests/lib/libc/kevent_nullmnt/t_nullmnt		tests-lib-tests		compattestfile,atf
 ./usr/tests/lib/libc/locale				tests-lib-tests		compattestfile,atf
 ./usr/tests/lib/libc/locale/Atffile			tests-lib-tests		compattestfile,atf
 ./usr/tests/lib/libc/locale/Kyuafile			tests-lib-tests		compattestfile,atf,kyua

Index: src/etc/mtree/NetBSD.dist.tests
diff -u src/etc/mtree/NetBSD.dist.tests:1.190 src/etc/mtree/NetBSD.dist.tests:1.191
--- src/etc/mtree/NetBSD.dist.tests:1.190	Fri Apr  8 23:35:52 2022
+++ src/etc/mtree/NetBSD.dist.tests	Fri Apr 29 22:17:50 2022
@@ -1,4 +1,4 @@
-#	$NetBSD: NetBSD.dist.tests,v 1.190 2022/04/08 23:35:52 riastradh Exp $
+#	$NetBSD: NetBSD.dist.tests,v 1.191 2022/04/29 22:17:50 pgoyette Exp $
 
 ./usr/libdata/debug/usr/tests
 ./usr/libdata/debug/usr/tests/atf
@@ -85,6 +85,7 @@
 ./usr/libdata/debug/usr/tests/lib/libc/hash
 ./usr/libdata/debug/usr/tests/lib/libc/inet
 ./usr/libdata/debug/usr/tests/lib/libc/locale
+./usr/libdata/debug/usr/tests/lib/libc/kevent_nullmnt
 ./usr/libdata/debug/usr/tests/lib/libc/membar
 ./usr/libdata/debug/usr/tests/lib/libc/misc
 ./usr/libdata/debug/usr/tests/lib/libc/net
@@ -288,6 +289,7 @@
 ./usr/tests/lib/libc/hash/data
 ./usr/tests/lib/libc/inet
 ./usr/tests/lib/libc/locale
+./usr/tests/lib/libc/kevent_nullmnt
 ./usr/tests/lib/libc/membar
 ./usr/tests/lib/libc/misc
 ./usr/tests/lib/libc/net

Index: src/tests/lib/libc/Makefile
diff -u src/tests/lib/libc/Makefile:1.51 src/tests/lib/libc/Makefile:1.52
--- src/tests/lib/libc/Makefile:1.51	Fri Apr  8 23:35:52 2022
+++ src/tests/lib/libc/Makefile	Fri Apr 29 22:17:49 2022
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.51 2022/04/08 23:35:52 riastradh Exp $
+# $NetBSD: Makefile,v 1.52 2022/04/29 22:17:49 pgoyette Exp $
 
 .include "Makefile.inc"
 .include <bsd.own.mk>
@@ -11,6 +11,7 @@ TESTS_SUBDIRS+=	db
 TESTS_SUBDIRS+=	gen
 TESTS_SUBDIRS+=	hash
 TESTS_SUBDIRS+=	inet
+TESTS_SUBDIRS+= kevent_nullmnt
 TESTS_SUBDIRS+=	locale
 TESTS_SUBDIRS+=	membar
 TESTS_SUBDIRS+=	misc

Added files:

Index: src/tests/lib/libc/kevent_nullmnt/Makefile
diff -u /dev/null src/tests/lib/libc/kevent_nullmnt/Makefile:1.1
--- /dev/null	Fri Apr 29 22:17:50 2022
+++ src/tests/lib/libc/kevent_nullmnt/Makefile	Fri Apr 29 22:17:49 2022
@@ -0,0 +1,14 @@
+# $NetBSD: Makefile,v 1.1 2022/04/29 22:17:49 pgoyette Exp $
+
+.include <bsd.own.mk>
+
+TESTSDIR=	${TESTSBASE}/lib/libc/kevent_nullmnt
+
+TESTS_SH+=	t_nullmnt
+
+BINDIR=		${TESTSDIR}
+MKMAN=		no
+
+PROGS+=		h_nullmnt
+
+.include <bsd.test.mk>
Index: src/tests/lib/libc/kevent_nullmnt/h_nullmnt.c
diff -u /dev/null src/tests/lib/libc/kevent_nullmnt/h_nullmnt.c:1.1
--- /dev/null	Fri Apr 29 22:17:50 2022
+++ src/tests/lib/libc/kevent_nullmnt/h_nullmnt.c	Fri Apr 29 22:17:49 2022
@@ -0,0 +1,77 @@
+#include <err.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <sys/event.h>
+#include <sys/time.h>
+
+/*
+ * External set-up code is expected to do the equivalent of
+ *	cd $TOPDIR
+ *	mkdir realdir
+ *	mkdir nulldir
+ *	mount -t null $TOPDIR/realdir $TOPDIR/nulldir
+ *	rm -f $TOPDIR/realdir/afile
+ *	touch $TOPDIR/realdir/afile
+ * then execute this test program:
+ *	./h_nullmnt $TOPDIR/realdir/afile $TOPDIR/nulldir/afile
+ *
+ * The expected result is that the write() to the nullfile will
+ * queue up a preexisting kevent which will then be detected by
+ * the (second) call to kevent(); the failure mode is that the
+ * write()'s extension to the file is not seen, and the kevent
+ * call times out after 5 seconds.
+ *
+ * Clean-up code should undo the null mount and delete everything
+ * in the test directory.
+ */
+
+int main(int argc, char **argv)
+{
+	int realfile, nullfile;
+	int kq, nev, rsize;
+	struct timespec timeout;
+	struct kevent eventlist;
+	const char outbuf[] = "new\n";
+	char inbuf[20];
+
+	if (argc <= 2)
+		errx(EXIT_FAILURE, "insufficient args %d", argc);
+
+	realfile = open(argv[1], O_RDONLY);
+	if (realfile == -1)
+		err(EXIT_FAILURE, "failed to open realfile %s",
+		    argv[1]);
+
+	nullfile = open(argv[2], O_WRONLY, O_APPEND);
+	if (nullfile == -1)
+		err(EXIT_FAILURE, "failed to open nullfile %s",
+		    argv[2]);
+
+	if ((kq = kqueue()) == -1)
+		err(EXIT_FAILURE, "Cannot create kqueue");
+
+	timeout.tv_sec = 5;
+	timeout.tv_nsec = 0;
+
+	EV_SET(&eventlist, realfile,
+	    EVFILT_VNODE, EV_ADD | EV_ENABLE | EV_CLEAR,
+	    NOTE_WRITE | NOTE_EXTEND, 0, 0);
+	if (kevent(kq, &eventlist, 1, NULL, 0, NULL) == -1)
+		err(EXIT_FAILURE, "Failed to set eventlist for fd %d",
+		    realfile);
+
+	rsize = read(realfile, &inbuf, sizeof(inbuf));
+	if (rsize)
+		errx(EXIT_FAILURE, "Ooops we got %d bytes of data!\n", rsize);
+
+	write(nullfile, &outbuf, sizeof(outbuf) - 1);
+
+	nev = kevent(kq, NULL, 0, &eventlist, 1, &timeout);
+	if (nev == -1)
+		err(EXIT_FAILURE, "Failed to retrieve event");
+
+	errx((nev == 0) ? EXIT_FAILURE : EXIT_SUCCESS,
+	    "Retrieved %d events, first 0x%x", nev, eventlist.flags);
+}
Index: src/tests/lib/libc/kevent_nullmnt/t_nullmnt.sh
diff -u /dev/null src/tests/lib/libc/kevent_nullmnt/t_nullmnt.sh:1.1
--- /dev/null	Fri Apr 29 22:17:50 2022
+++ src/tests/lib/libc/kevent_nullmnt/t_nullmnt.sh	Fri Apr 29 22:17:49 2022
@@ -0,0 +1,35 @@
+atf_test_case nullmnt cleanup
+nullmnt_head()
+{ 
+	atf_set "descr" "ensure file events traverse null-mounts"
+}    
+
+nullmnt_body()
+{    
+	srcdir=$(atf_get_srcdir)
+	helper=${srcdir}/h_nullmnt
+
+	mkdir ${srcdir}/realdir
+	mkdir ${srcdir}/nulldir
+	mount -t null ${srcdir}/realdir ${srcdir}/nulldir
+	rm -f ${srcdir}/realdir/afile
+	touch ${srcdir}/realdir/afile
+
+	atf_expect_fail "PR kern/56713"
+
+	atf_check -e ignore -o ignore -s exit:0 \
+		${helper} ${srcdir}/realdir/afile ${srcdir}/nulldir/afile
+
+} 
+
+nullmnt_cleanup()
+{
+	srcdir=$(atf_get_srcdir)
+	umount ${srcdir}/nulldir
+	rm -rf ${srcdir}/realdir ${srcdir}/nulldir
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case nullmnt
+}

Reply via email to