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();
+}