Date: Tue, 3 Dec 2013 18:27:10 +0000 (UTC) From: John-Mark Gurney <jmg@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r258876 - in user/pho/stress2: . testcases testcases/dirnprename testcases/dirrename Message-ID: <201312031827.rB3IRA2i033963@svn.freebsd.org>
index | next in thread | raw e-mail
Author: jmg Date: Tue Dec 3 18:27:10 2013 New Revision: 258876 URL: http://svnweb.freebsd.org/changeset/base/258876 Log: add two new tests... One simply renames directories.. The other moves a directory between two directories... directory renames w/ a new parent are more difficult to handle as you have to make sure that the . and .. links are correct, and all the link counts are correct... I'm not entirely happy w/ the 97 hard coded value, but with the default UFS sizes, it forces us into using indirect blocks for the directory which introduce more dependencies that softdep code has to track properly... add a config file dirrem.cfg which is what I used to reproduce/test a bug in softdep code for Kirk and Imaginary Forces... Sponsored by: Imaginary Forces Reviewed by: pho Added: user/pho/stress2/dirrem.cfg user/pho/stress2/testcases/dirnprename/Makefile (contents, props changed) user/pho/stress2/testcases/dirrename/Makefile (contents, props changed) Modified: user/pho/stress2/testcases/Makefile user/pho/stress2/testcases/dirnprename/dirnprename.c user/pho/stress2/testcases/dirrename/dirrename.c Added: user/pho/stress2/dirrem.cfg ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/dirrem.cfg Tue Dec 3 18:27:10 2013 (r258876) @@ -0,0 +1,14 @@ +# $FreeBSD: user/pho/stress2/marcus.cfg 253354 2013-07-15 07:00:19Z pho $ + +# Stress Test Suite Configuration + +# Default values +. ./default.cfg + +# Test configuration for the vop_stdvptocnp implementation + +export TESTPROGS=" +testcases/dirnprename/dirnprename +testcases/dirrename/dirrename +testcases/rename/rename +" Modified: user/pho/stress2/testcases/Makefile ============================================================================== --- user/pho/stress2/testcases/Makefile Tue Dec 3 18:18:35 2013 (r258875) +++ user/pho/stress2/testcases/Makefile Tue Dec 3 18:27:10 2013 (r258876) @@ -3,6 +3,8 @@ SUBDIR= \ badcode \ creat \ +dirrename \ +dirnprename \ fts \ link \ lockf \ Added: user/pho/stress2/testcases/dirnprename/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/testcases/dirnprename/Makefile Tue Dec 3 18:27:10 2013 (r258876) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +PROG=dirnprename + +.include <bsd.prog.mk> Modified: user/pho/stress2/testcases/dirnprename/dirnprename.c ============================================================================== --- user/pho/stress2/testcases/dirnprename/dirnprename.c Tue Dec 3 18:18:35 2013 (r258875) +++ user/pho/stress2/testcases/dirnprename/dirnprename.c Tue Dec 3 18:27:10 2013 (r258876) @@ -36,18 +36,22 @@ __FBSDID("$FreeBSD$"); #include <sys/stat.h> #include <sys/param.h> #include <err.h> +#include <errno.h> #include "stress.h" +static char path[128]; static unsigned long size; int setup(int nb) { + char file1[512]; int64_t in; int64_t bl; int64_t reserve_in; int64_t reserve_bl; + int i; umask(0); @@ -81,41 +85,71 @@ setup(int nb) if (size == 0) exit(0); + sprintf(path, "%s.%05d", getprogname(), getpid()); + if (mkdir(path, 0770) == -1) + err(1, "mkdir(%s), %s:%d", path, __FILE__, __LINE__); + + /* don't hard code 97 */ + for (i = 0; i < 97; i++) { + sprintf(file1, "%s/%0255d", path, i); + if (mkdir(file1, 0770) == -1) + err(1, "mkdir(%s), %s:%d", file1, __FILE__, __LINE__); + } return (0); } void cleanup(void) { + char file1[512]; + int i; + + /* don't hard code 97 */ + for (i = 0; i < 97; i++) { + sprintf(file1, "%s/%0255d", path, i); + if (rmdir(file1) == -1) + warn("rmdir(%s), %s:%d", file1, __FILE__, __LINE__); + } + if (rmdir(path) == -1) + warn("rmdir(%s), %s:%d", path, __FILE__, __LINE__); } static void test_rename(void) { int i, j; + int errnotmp; pid_t pid; char file1[128]; char file2[128]; - int tfd; pid = getpid(); for (i = 0; i < (int)size; i++) { sprintf(file1,"p%05d.%05d", pid, i); - if ((tfd = open(file1, O_RDONLY|O_CREAT, 0660)) == -1) - err(1, "openat(%s), %s:%d", file1, __FILE__, __LINE__); - close(tfd); + if (mkdir(file1, 0660) == -1) { + j = i; + errnotmp = errno; + while (j > 0) { + j--; + sprintf(file1,"p%05d.%05d", pid, j); + rmdir(file1); + } + errno = errnotmp; + sprintf(file1,"p%05d.%05d", pid, i); + err(1, "mkdir(%s), %s:%d", file1, __FILE__, __LINE__); + } } for (j = 0; j < 100 && done_testing == 0; j++) { for (i = 0; i < (int)size; i++) { sprintf(file1,"p%05d.%05d", pid, i); - sprintf(file2,"p%05d.%05d.togo", pid, i); + sprintf(file2,"%s/p%05d.%05d.togo", path, pid, i); if (rename(file1, file2) == -1) err(1, "rename(%s, %s). %s:%d", file1, file2, __FILE__, __LINE__); } for (i = 0; i < (int)size; i++) { sprintf(file1,"p%05d.%05d", pid, i); - sprintf(file2,"p%05d.%05d.togo", pid, i); + sprintf(file2,"%s/p%05d.%05d.togo", path, pid, i); if (rename(file2, file1) == -1) err(1, "rename(%s, %s). %s:%d", file2, file1, __FILE__, __LINE__); @@ -124,8 +158,8 @@ test_rename(void) for (i = 0; i < (int)size; i++) { sprintf(file1,"p%05d.%05d", pid, i); - if (unlink(file1) == -1) - err(1, "unlink(%s), %s:%d", file1, __FILE__, __LINE__); + if (rmdir(file1) == -1) + err(1, "rmdir(%s), %s:%d", file1, __FILE__, __LINE__); } } Added: user/pho/stress2/testcases/dirrename/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/testcases/dirrename/Makefile Tue Dec 3 18:27:10 2013 (r258876) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +PROG=dirrename + +.include <bsd.prog.mk> Modified: user/pho/stress2/testcases/dirrename/dirrename.c ============================================================================== --- user/pho/stress2/testcases/dirrename/dirrename.c Tue Dec 3 18:18:35 2013 (r258875) +++ user/pho/stress2/testcases/dirrename/dirrename.c Tue Dec 3 18:27:10 2013 (r258876) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <sys/stat.h> #include <sys/param.h> #include <err.h> +#include <errno.h> #include "stress.h" @@ -93,17 +94,26 @@ static void test_rename(void) { int i, j; + int errnotmp; pid_t pid; char file1[128]; char file2[128]; - int tfd; pid = getpid(); for (i = 0; i < (int)size; i++) { sprintf(file1,"p%05d.%05d", pid, i); - if ((tfd = open(file1, O_RDONLY|O_CREAT, 0660)) == -1) - err(1, "openat(%s), %s:%d", file1, __FILE__, __LINE__); - close(tfd); + if (mkdir(file1, 0660) == -1) { + j = i; + errnotmp = errno; + while (j > 0) { + j--; + sprintf(file1,"p%05d.%05d", pid, j); + rmdir(file1); + } + errno = errnotmp; + sprintf(file1,"p%05d.%05d", pid, i); + err(1, "mkdir(%s), %s:%d", file1, __FILE__, __LINE__); + } } for (j = 0; j < 100 && done_testing == 0; j++) { for (i = 0; i < (int)size; i++) { @@ -124,7 +134,7 @@ test_rename(void) for (i = 0; i < (int)size; i++) { sprintf(file1,"p%05d.%05d", pid, i); - if (unlink(file1) == -1) + if (rmdir(file1) == -1) err(1, "unlink(%s), %s:%d", file1, __FILE__, __LINE__); } }help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312031827.rB3IRA2i033963>
