Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jul 2013 08:03:47 +0000 (UTC)
From:      Peter Holm <pho@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r253063 - user/pho/stress2/testcases/openat
Message-ID:  <201307090803.r6983lWG005825@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pho
Date: Tue Jul  9 08:03:47 2013
New Revision: 253063
URL: http://svnweb.freebsd.org/changeset/base/253063

Log:
  Added missing resource reservation. Added missing test for test done.
  
  Sponsored by:	EMC / Isilon storage division

Modified:
  user/pho/stress2/testcases/openat/openat.c

Modified: user/pho/stress2/testcases/openat/openat.c
==============================================================================
--- user/pho/stress2/testcases/openat/openat.c	Tue Jul  9 07:59:47 2013	(r253062)
+++ user/pho/stress2/testcases/openat/openat.c	Tue Jul  9 08:03:47 2013	(r253063)
@@ -46,12 +46,39 @@ static char rpath[128];
 static char apath[128];
 
 static int fd;
+int freespace;
 
 int
 setup(int nb)
 {
+	int64_t bl;
+	int64_t in;
+	int64_t reserve_bl;
+	int64_t reserve_in;
+
 	umask(0);
 
+	if (nb == 0) {
+		getdf(&bl, &in);
+
+		/* Resource requirements: */
+		reserve_in =    4 * op->incarnations;
+		reserve_bl = 8192 * op->incarnations;
+		freespace = (reserve_bl <= bl && reserve_in <= in);
+		if (!freespace)
+			reserve_bl = reserve_in = 0;
+
+		if (op->verbose > 1)
+			printf("openat(incarnations=%d). Free(%jdk, %jd), reserve(%jdk, %jd)\n",
+			    op->incarnations, bl/1024, in, reserve_bl/1024, reserve_in);
+		reservedf(reserve_bl, reserve_in);
+		putval(freespace);
+	} else {
+		freespace = getval();
+	}
+	if (!freespace)
+		exit(0);
+
 	sprintf(path1,"%s.%05d", getprogname(), getpid());
 	if (mkdir(path1, 0770) < 0)
 		err(1, "mkdir(%s), %s:%d", path1, __FILE__, __LINE__);
@@ -78,13 +105,11 @@ setup(int nb)
 void
 cleanup(void)
 {
-#if 1
 	if (rmdir(path2) == -1)
 		warn("rmdir(%s), %s:%d", path2, __FILE__, __LINE__);
 	(void)chdir("..");
 	if (rmdir(path1) == -1)
 		warn("rmdir(%s), %s:%d", path1, __FILE__, __LINE__);
-#endif
 }
 
 static void
@@ -97,7 +122,7 @@ test_openat(void)
 	int tfd;
 
 	pid = getpid();
-	for (i = 0; i < 100; i++) {
+	for (i = 0; i < 100 && done_testing == 0; i++) {
 		sprintf(file,"p%05d.%05d", pid, i);
 		if ((tfd = openat(fd, file, O_RDONLY|O_CREAT, 0660)) == -1)
 			err(1, "openat(%s), %s:%d", file, __FILE__, __LINE__);
@@ -119,7 +144,7 @@ test_renameat(void)
 	int tfd;
 
 	pid = getpid();
-	for (i = 0; i < 100; i++) {
+	for (i = 0; i < 100 && done_testing == 0; i++) {
 		sprintf(file,"p%05d.%05d", pid, i);
 		if ((tfd = openat(fd, file, O_RDONLY|O_CREAT, 0660)) == -1)
 			err(1, "openat(%s), %s:%d", file, __FILE__, __LINE__);
@@ -144,7 +169,7 @@ test_unlinkat(void)
 	int tfd;
 
 	pid = getpid();
-	for (i = 0; i < 100; i++) {
+	for (i = 0; i < 100 && done_testing == 0; i++) {
 		sprintf(file,"p%05d.%05d", pid, i);
 		if ((tfd = openat(fd, file, O_RDONLY|O_CREAT, 0660)) == -1)
 			err(1, "openat(%s), %s:%d", file, __FILE__, __LINE__);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307090803.r6983lWG005825>