All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] fsstress: add the [-l loops] option
@ 2015-05-28  0:58 Theodore Ts'o
  2015-05-28  0:58 ` [PATCH 2/2] fsstress: add the -c option Theodore Ts'o
  2015-05-28  1:32 ` [PATCH 1/2] fsstress: add the [-l loops] option Eric Sandeen
  0 siblings, 2 replies; 5+ messages in thread
From: Theodore Ts'o @ 2015-05-28  0:58 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o

This feature is in the ltp version of fsstress; port it into
xfstests.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 ltp/fsstress.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/ltp/fsstress.c b/ltp/fsstress.c
index aa3e0c3..ad0c65f 100644
--- a/ltp/fsstress.c
+++ b/ltp/fsstress.c
@@ -330,7 +330,8 @@ int main(int argc, char **argv)
 	int             nousage = 0;
 	xfs_error_injection_t	        err_inj;
 	struct sigaction action;
-	const char	*allopts = "d:e:f:i:m:M:n:o:p:rs:S:vVwx:X:zH";
+	int		loops = 1;
+	const char	*allopts = "d:e:f:i:l:m:M:n:o:p:rs:S:vVwx:X:zH";
 
 	errrange = errtag = 0;
 	umask(0);
@@ -372,6 +373,9 @@ int main(int argc, char **argv)
 				exit(1);
 			}
 			break;
+		case 'l':
+			loops = atoi(optarg);
+			break;
 		case 'n':
 			operations = atoi(optarg);
 			break;
@@ -538,7 +542,8 @@ int main(int argc, char **argv)
 				}
 			}
 			procid = i;
-			doproc();
+			for (i = 0; !loops || (i < loops); i++)
+				doproc();
 			return 0;
 		}
 	}
@@ -896,10 +901,12 @@ doproc(void)
 			rval = stat64(".", &statbuf);
 			if (rval == EIO)  {
 				fprintf(stderr, "Detected EIO\n");
-				return;
+				goto errout;
 			}
 		}
 	}
+errout:
+	chdir("..");
 }
 
 /*
@@ -1572,7 +1579,7 @@ void
 usage(void)
 {
 	printf("Usage: %s -H   or\n", myprog);
-	printf("       %s [-d dir][-e errtg][-f op_name=freq][-n nops]\n",
+	printf("       %s [-d dir][-e errtg][-f op_name=freq][-l loops][-n nops]\n",
 		myprog);
 	printf("          [-p nproc][-r len][-s seed][-v][-w][-x cmd][-z][-S][-X ncmd]\n");
 	printf("where\n");
@@ -1582,6 +1589,8 @@ usage(void)
 	printf("                    the valid operation names are:\n");
 	show_ops(-1, "                        ");
 	printf("   -i filenum       get verbose output for this nth file object\n");
+	printf("   -l loops         specifies the no. of times the testrun should loop.\n");
+	printf("                     *use 0 for infinite (default 1)\n");
 	printf("   -m modulo        uid/gid modulo for chown/chgrp (default 32)\n");
 	printf("   -n nops          specifies the no. of operations per process (default 1)\n");
 	printf("   -o logfile       specifies logfile name\n");
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] fsstress: add the -c option
  2015-05-28  0:58 [PATCH 1/2] fsstress: add the [-l loops] option Theodore Ts'o
@ 2015-05-28  0:58 ` Theodore Ts'o
  2015-05-28  1:32 ` [PATCH 1/2] fsstress: add the [-l loops] option Eric Sandeen
  1 sibling, 0 replies; 5+ messages in thread
From: Theodore Ts'o @ 2015-05-28  0:58 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o

This option causes fsstress to delete the test directory between each
run.  This is the opposite from the ltp version of fsstress, which
deletes the test directory by default, and the -c option caused ltp's
fsstress _not_ to delete the test directory.

It can be useful to be able to have the same test behavior as ltp
version, and although reversing the sense of the option is
unfortunate, it also reserves the -c option, which makes it a bit
easier if we want to eventually have one version which is a superset
of the xfstest and ltp version of fsstress.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 ltp/fsstress.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/ltp/fsstress.c b/ltp/fsstress.c
index ad0c65f..1e6c913 100644
--- a/ltp/fsstress.c
+++ b/ltp/fsstress.c
@@ -258,6 +258,7 @@ int		procid;
 int		rtpct;
 unsigned long	seed = 0;
 ino_t		top_ino;
+int		cleanup = 0;
 int		verbose = 0;
 int		verifiable_log = 0;
 sig_atomic_t	should_stop = 0;
@@ -331,7 +332,7 @@ int main(int argc, char **argv)
 	xfs_error_injection_t	        err_inj;
 	struct sigaction action;
 	int		loops = 1;
-	const char	*allopts = "d:e:f:i:l:m:M:n:o:p:rs:S:vVwx:X:zH";
+	const char	*allopts = "cd:e:f:i:l:m:M:n:o:p:rs:S:vVwx:X:zH";
 
 	errrange = errtag = 0;
 	umask(0);
@@ -340,6 +341,9 @@ int main(int argc, char **argv)
 	myprog = argv[0];
 	while ((c = getopt(argc, argv, allopts)) != -1) {
 		switch (c) {
+		case 'c':
+			cleanup = 1;
+			break;
 		case 'd':
 			dirname = optarg;
 			break;
@@ -862,6 +866,7 @@ doproc(void)
 {
 	struct stat64	statbuf;
 	char		buf[10];
+	char		cmd[64];
 	int		opno;
 	int		rval;
 	opdesc_t	*p;
@@ -907,6 +912,10 @@ doproc(void)
 	}
 errout:
 	chdir("..");
+	if (cleanup) {
+		sprintf(cmd, "rm -rf %s", buf);
+		system(cmd);
+	}
 }
 
 /*
@@ -1579,10 +1588,11 @@ void
 usage(void)
 {
 	printf("Usage: %s -H   or\n", myprog);
-	printf("       %s [-d dir][-e errtg][-f op_name=freq][-l loops][-n nops]\n",
+	printf("       %s [-c][-d dir][-e errtg][-f op_name=freq][-l loops][-n nops]\n",
 		myprog);
 	printf("          [-p nproc][-r len][-s seed][-v][-w][-x cmd][-z][-S][-X ncmd]\n");
 	printf("where\n");
+	printf("   -c               clean up the test directory after each run\n");
 	printf("   -d dir           specifies the base directory for operations\n");
 	printf("   -e errtg         specifies error injection stuff\n");
 	printf("   -f op_name=freq  changes the frequency of option name to freq\n");
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] fsstress: add the [-l loops] option
  2015-05-28  0:58 [PATCH 1/2] fsstress: add the [-l loops] option Theodore Ts'o
  2015-05-28  0:58 ` [PATCH 2/2] fsstress: add the -c option Theodore Ts'o
@ 2015-05-28  1:32 ` Eric Sandeen
  2015-05-28 18:25   ` Theodore Ts'o
  1 sibling, 1 reply; 5+ messages in thread
From: Eric Sandeen @ 2015-05-28  1:32 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: fstests@vger.kernel.org



> On May 27, 2015, at 7:58 PM, Theodore Ts'o <tytso@mit.edu> wrote:
> 
> This feature is in the ltp version of fsstress; port it into
> xfstests.
> 
> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
> ---
> ltp/fsstress.c | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/ltp/fsstress.c b/ltp/fsstress.c
> index aa3e0c3..ad0c65f 100644
> --- a/ltp/fsstress.c
> +++ b/ltp/fsstress.c
> @@ -330,7 +330,8 @@ int main(int argc, char **argv)
>    int             nousage = 0;
>    xfs_error_injection_t            err_inj;
>    struct sigaction action;
> -    const char    *allopts = "d:e:f:i:m:M:n:o:p:rs:S:vVwx:X:zH";
> +    int        loops = 1;
> +    const char    *allopts = "d:e:f:i:l:m:M:n:o:p:rs:S:vVwx:X:zH";
> 
>    errrange = errtag = 0;
>    umask(0);
> @@ -372,6 +373,9 @@ int main(int argc, char **argv)
>                exit(1);
>            }
>            break;
> +        case 'l':
> +            loops = atoi(optarg);
> +            break;
>        case 'n':
>            operations = atoi(optarg);
>            break;
> @@ -538,7 +542,8 @@ int main(int argc, char **argv)
>                }
>            }
>            procid = i;
> -            doproc();
> +            for (i = 0; !loops || (i < loops); i++)
> +                doproc();
>            return 0;
>        }
>    }
> @@ -896,10 +901,12 @@ doproc(void)
>            rval = stat64(".", &statbuf);
>            if (rval == EIO)  {
>                fprintf(stderr, "Detected EIO\n");
> -                return;
> +                goto errout;
>            }
>        }
>    }
> +errout:
> +    chdir("..");

This seems unrelated, no?

Eric


> }
> 
> /*
> @@ -1572,7 +1579,7 @@ void
> usage(void)
> {
>    printf("Usage: %s -H   or\n", myprog);
> -    printf("       %s [-d dir][-e errtg][-f op_name=freq][-n nops]\n",
> +    printf("       %s [-d dir][-e errtg][-f op_name=freq][-l loops][-n nops]\n",
>        myprog);
>    printf("          [-p nproc][-r len][-s seed][-v][-w][-x cmd][-z][-S][-X ncmd]\n");
>    printf("where\n");
> @@ -1582,6 +1589,8 @@ usage(void)
>    printf("                    the valid operation names are:\n");
>    show_ops(-1, "                        ");
>    printf("   -i filenum       get verbose output for this nth file object\n");
> +    printf("   -l loops         specifies the no. of times the testrun should loop.\n");
> +    printf("                     *use 0 for infinite (default 1)\n");
>    printf("   -m modulo        uid/gid modulo for chown/chgrp (default 32)\n");
>    printf("   -n nops          specifies the no. of operations per process (default 1)\n");
>    printf("   -o logfile       specifies logfile name\n");
> -- 
> 2.3.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] fsstress: add the [-l loops] option
  2015-05-28  1:32 ` [PATCH 1/2] fsstress: add the [-l loops] option Eric Sandeen
@ 2015-05-28 18:25   ` Theodore Ts'o
  2015-05-28 18:49     ` Eric Sandeen
  0 siblings, 1 reply; 5+ messages in thread
From: Theodore Ts'o @ 2015-05-28 18:25 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: fstests@vger.kernel.org

On Wed, May 27, 2015 at 08:32:23PM -0500, Eric Sandeen wrote:
> 
> > +errout:
> > +    chdir("..");
> 
> This seems unrelated, no?

This is needed to so that we leave doproc with the same CWD that we
entered with.  At the beginning of the doproc, we do the eqvuialent of

	mkdir -p pN
	cd pN

(where N is 0, 1, 2, 3, ..)

previously doproc was only executed once, so it didn't matter what the
CWD was when we were doing with doproc().  But since with this patch
we are now calling doproc in the loop, the chdir("..") is required or
each successive loop will result in a new p0 directory being created,
and then at the end of the run, the files will be in

.../p0/p0/p0/p0/p0/p0/p0/p0/p0/...

       	   	   	     	 - Ted

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] fsstress: add the [-l loops] option
  2015-05-28 18:25   ` Theodore Ts'o
@ 2015-05-28 18:49     ` Eric Sandeen
  0 siblings, 0 replies; 5+ messages in thread
From: Eric Sandeen @ 2015-05-28 18:49 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: fstests@vger.kernel.org

On 5/28/15 1:25 PM, Theodore Ts'o wrote:
> On Wed, May 27, 2015 at 08:32:23PM -0500, Eric Sandeen wrote:
>>
>>> +errout:
>>> +    chdir("..");
>>
>> This seems unrelated, no?
> 
> This is needed to so that we leave doproc with the same CWD that we
> entered with.  At the beginning of the doproc, we do the eqvuialent of
> 
> 	mkdir -p pN
> 	cd pN
> 
> (where N is 0, 1, 2, 3, ..)
> 
> previously doproc was only executed once, so it didn't matter what the
> CWD was when we were doing with doproc().  But since with this patch
> we are now calling doproc in the loop, the chdir("..") is required or
> each successive loop will result in a new p0 directory being created,
> and then at the end of the run, the files will be in
> 
> .../p0/p0/p0/p0/p0/p0/p0/p0/p0/...

Oh, right.  I'm sorry, inferred too much from the patch, w/o reading the
context around the context.

-Eric


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-05-28 18:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-28  0:58 [PATCH 1/2] fsstress: add the [-l loops] option Theodore Ts'o
2015-05-28  0:58 ` [PATCH 2/2] fsstress: add the -c option Theodore Ts'o
2015-05-28  1:32 ` [PATCH 1/2] fsstress: add the [-l loops] option Eric Sandeen
2015-05-28 18:25   ` Theodore Ts'o
2015-05-28 18:49     ` Eric Sandeen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.