Module Name:    src
Committed By:   pooka
Date:           Wed Jul 14 21:39:31 UTC 2010

Modified Files:
        src/tests/fs/ffs: Makefile
        src/tests/fs/tmpfs: t_renamerace.c
        src/tests/fs/vfs: Makefile
Added Files:
        src/tests/fs/vfs: t_renamerace.c
Removed Files:
        src/tests/fs/ffs: t_renamerace.c

Log Message:
Convert "The Original" rename race test from to vfs and retire the
ffs/tmpfs versions.  The only difference is that the origamical
one mounted ffs with MNT_LOG (and therein actually lay the bug).


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/tests/fs/ffs/Makefile
cvs rdiff -u -r1.12 -r0 src/tests/fs/ffs/t_renamerace.c
cvs rdiff -u -r1.7 -r1.8 src/tests/fs/tmpfs/t_renamerace.c
cvs rdiff -u -r1.5 -r1.6 src/tests/fs/vfs/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/fs/vfs/t_renamerace.c

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

Modified files:

Index: src/tests/fs/ffs/Makefile
diff -u src/tests/fs/ffs/Makefile:1.8 src/tests/fs/ffs/Makefile:1.9
--- src/tests/fs/ffs/Makefile:1.8	Wed Jun 30 21:54:56 2010
+++ src/tests/fs/ffs/Makefile	Wed Jul 14 21:39:31 2010
@@ -1,10 +1,9 @@
-#	$NetBSD: Makefile,v 1.8 2010/06/30 21:54:56 njoly Exp $
+#	$NetBSD: Makefile,v 1.9 2010/07/14 21:39:31 pooka Exp $
 #
 
 TESTSDIR=	${TESTSBASE}/fs/ffs
 WARNS=		4
 
-TESTS_C=	t_renamerace
 TESTS_C+=	t_fifos
 TESTS_C+=	t_snapshot
 TESTS_C+=	t_mount

Index: src/tests/fs/tmpfs/t_renamerace.c
diff -u src/tests/fs/tmpfs/t_renamerace.c:1.7 src/tests/fs/tmpfs/t_renamerace.c:1.8
--- src/tests/fs/tmpfs/t_renamerace.c:1.7	Sun Jul  4 12:43:23 2010
+++ src/tests/fs/tmpfs/t_renamerace.c	Wed Jul 14 21:39:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_renamerace.c,v 1.7 2010/07/04 12:43:23 pooka Exp $	*/
+/*	$NetBSD: t_renamerace.c,v 1.8 2010/07/14 21:39:31 pooka Exp $	*/
 
 /*
  * Modified for rump and atf from a program supplied
@@ -25,56 +25,6 @@
 
 #include "../../h_macros.h"
 
-ATF_TC(renamerace);
-ATF_TC_HEAD(renamerace, tc)
-{
-	atf_tc_set_md_var(tc, "descr", "rename(2) race against files "
-	    "unlinked mid-operation, kern/41128");
-}
-
-static void *
-w1(void *arg)
-{
-	int fd;
-
-	for (;;) {
-		fd = rump_sys_open("/rename.test1",
-		    O_WRONLY|O_CREAT|O_TRUNC, 0666);
-		rump_sys_unlink("/rename.test1");
-		rump_sys_close(fd);
-	}
-	return NULL;
-}
-
-static void *
-w2(void *arg)
-{
-
-	for (;;) {
-		rump_sys_rename("/rename.test1", "/rename.test2");
-	}
-	return NULL;
-}
-
-ATF_TC_BODY(renamerace, tc)
-{
-	struct tmpfs_args args;
-	pthread_t pt1, pt2;
-
-	memset(&args, 0, sizeof(args));
-	args.ta_version = TMPFS_ARGS_VERSION;
-	args.ta_root_mode = 0777;
-
-	rump_init();
-	if (rump_sys_mount(MOUNT_TMPFS, "/", 0, &args, sizeof(args)) == -1)
-		atf_tc_fail_errno("could not mount tmpfs");
-
-	pthread_create(&pt1, NULL, w1, NULL);
-	pthread_create(&pt2, NULL, w2, NULL);
-
-	sleep(10);
-}
-
 ATF_TC(renamerace2);
 ATF_TC_HEAD(renamerace2, tc)
 {
@@ -169,7 +119,6 @@
 
 ATF_TP_ADD_TCS(tp)
 {
-	ATF_TP_ADD_TC(tp, renamerace);
 	ATF_TP_ADD_TC(tp, renamerace2);
 
 	return atf_no_error();

Index: src/tests/fs/vfs/Makefile
diff -u src/tests/fs/vfs/Makefile:1.5 src/tests/fs/vfs/Makefile:1.6
--- src/tests/fs/vfs/Makefile:1.5	Tue Jul 13 18:13:10 2010
+++ src/tests/fs/vfs/Makefile	Wed Jul 14 21:39:31 2010
@@ -1,10 +1,11 @@
-#	$NetBSD: Makefile,v 1.5 2010/07/13 18:13:10 pooka Exp $
+#	$NetBSD: Makefile,v 1.6 2010/07/14 21:39:31 pooka Exp $
 #
 
 TESTSDIR=	${TESTSBASE}/fs/vfs
 WARNS=		4
 
-TESTS_C=	t_rmdirrace
+TESTS_C+=	t_renamerace
+TESTS_C+=	t_rmdirrace
 TESTS_C+=	t_vfsops
 TESTS_C+=	t_vnops
 

Added files:

Index: src/tests/fs/vfs/t_renamerace.c
diff -u /dev/null src/tests/fs/vfs/t_renamerace.c:1.1
--- /dev/null	Wed Jul 14 21:39:31 2010
+++ src/tests/fs/vfs/t_renamerace.c	Wed Jul 14 21:39:31 2010
@@ -0,0 +1,90 @@
+/*	$NetBSD: t_renamerace.c,v 1.1 2010/07/14 21:39:31 pooka Exp $	*/
+
+/*
+ * Modified for rump and atf from a program supplied
+ * by Nicolas Joly in kern/40948
+ */
+
+#include <sys/types.h>
+#include <sys/mount.h>
+#include <sys/utsname.h>
+
+#include <atf-c.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <rump/rump.h>
+#include <rump/rump_syscalls.h>
+
+#include "../common/h_fsmacros.h"
+#include "../../h_macros.h"
+
+static volatile int quittingtime;
+
+static void *
+w1(void *arg)
+{
+	int fd;
+
+	rump_pub_lwp_alloc_and_switch(0, 10);
+	rump_sys_chdir(arg);
+
+	while (!quittingtime) {
+		fd = rump_sys_open("rename.test1",
+		    O_WRONLY|O_CREAT|O_TRUNC, 0666);
+		if (fd == -1)
+			atf_tc_fail_errno("create");
+		rump_sys_unlink("rename.test1");
+		rump_sys_close(fd);
+	}
+
+	rump_sys_chdir("/");
+
+	return NULL;
+}
+
+static void *
+w2(void *arg)
+{
+
+	rump_pub_lwp_alloc_and_switch(0, 11);
+	rump_sys_chdir(arg);
+
+	while (!quittingtime) {
+		rump_sys_rename("rename.test1", "rename.test2");
+	}
+
+	rump_sys_chdir("/");
+
+	return NULL;
+}
+
+static void
+renamerace(const atf_tc_t *tc, const char *mp)
+{
+	pthread_t pt1, pt2;
+
+	pthread_create(&pt1, NULL, w1, __UNCONST(mp));
+	pthread_create(&pt2, NULL, w2, __UNCONST(mp));
+
+	sleep(5);
+	quittingtime = 1;
+
+	pthread_join(pt1, NULL);
+	pthread_join(pt2, NULL);
+}
+
+ATF_TC_FSAPPLY(renamerace, "rename(2) race with file unlinked mid-operation");
+
+ATF_TP_ADD_TCS(tp)
+{
+
+	ATF_TP_FSAPPLY(renamerace); /* PR kern/41128 */
+
+	return atf_no_error();
+}

Reply via email to