Module Name:    src
Committed By:   pooka
Date:           Tue Mar  1 14:21:46 UTC 2011

Modified Files:
        src/tests/fs/vfs: t_vnops.c

Log Message:
augment rename test case with the failure from PR kern/44288


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/tests/fs/vfs/t_vnops.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/vfs/t_vnops.c
diff -u src/tests/fs/vfs/t_vnops.c:1.15 src/tests/fs/vfs/t_vnops.c:1.16
--- src/tests/fs/vfs/t_vnops.c:1.15	Mon Feb 28 03:40:45 2011
+++ src/tests/fs/vfs/t_vnops.c	Tue Mar  1 14:21:46 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_vnops.c,v 1.15 2011/02/28 03:40:45 pooka Exp $	*/
+/*	$NetBSD: t_vnops.c,v 1.16 2011/03/01 14:21:46 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -170,7 +170,7 @@
 rename_dir(const atf_tc_t *tc, const char *mp)
 {
 	char pb1[MAXPATHLEN], pb2[MAXPATHLEN], pb3[MAXPATHLEN];
-	struct stat ref;
+	struct stat ref, sb;
 
 	if (FSTYPE_MSDOS(tc))
 		atf_tc_skip("test fails in some setups, reason unknown");
@@ -247,11 +247,27 @@
 	md(pb1, mp, "dir2/../dir3");
 	checkfile(pb1, &ref);
 
-	/* finally, atomic cross-directory rename */
+	/* atomic cross-directory rename */
 	md(pb3, mp, "dir2/subdir");
 	if (rump_sys_rename(pb1, pb3) == -1)
 		atf_tc_fail_errno("rename 9");
 	checkfile(pb3, &ref);
+
+	/* rename directory over an empty directory */
+	md(pb1, mp, "parent");
+	md(pb2, mp, "parent/dir1");
+	md(pb3, mp, "parent/dir2");
+	RL(rump_sys_mkdir(pb1, 0777));
+	RL(rump_sys_mkdir(pb2, 0777));
+	RL(rump_sys_mkdir(pb3, 0777));
+	RL(rump_sys_rename(pb2, pb3));
+
+	RL(rump_sys_stat(pb1, &sb));
+	ATF_CHECK_EQ(sb.st_nlink, 3);
+	RL(rump_sys_rmdir(pb3));
+	if (FSTYPE_TMPFS(tc))
+		atf_tc_expect_signal(-1, "PR kern/44288");
+	RL(rump_sys_rmdir(pb1));
 }
 
 static void

Reply via email to