From owner-svn-src-user@FreeBSD.ORG Tue Dec 3 18:27:11 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EA452907; Tue, 3 Dec 2013 18:27:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D5BAE17AE; Tue, 3 Dec 2013 18:27:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rB3IRBCk033973; Tue, 3 Dec 2013 18:27:11 GMT (envelope-from jmg@svn.freebsd.org) Received: (from jmg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rB3IRA2i033963; Tue, 3 Dec 2013 18:27:10 GMT (envelope-from jmg@svn.freebsd.org) Message-Id: <201312031827.rB3IRA2i033963@svn.freebsd.org> From: John-Mark Gurney Date: Tue, 3 Dec 2013 18:27:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r258876 - in user/pho/stress2: . testcases testcases/dirnprename testcases/dirrename X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Dec 2013 18:27:12 -0000 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 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 #include #include +#include #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 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 #include #include +#include #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__); } }