From 1fa184a5be96d5c927b4c64d965afd417997e8fc Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Fri, 22 Apr 2011 18:32:23 +0300 Subject: fs-tests: use independent random generators for ops and data Currently integck uses the same global random generator for everything - for choosing the operation, generating the data, and for checking. This makes integck to become stuck sometimes. My guess this is because of we somehow re-set it back with srand() when checking files. This patch makes integck use different generators for data and for choosing operations by using rand_r() with own seed for operations. Signed-off-by: Artem Bityutskiy --- tests/fs-tests/integrity/integck.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c index fbd6cc5..5fb990e 100644 --- a/tests/fs-tests/integrity/integck.c +++ b/tests/fs-tests/integrity/integck.c @@ -214,6 +214,8 @@ static uint64_t operation_count = 0; /* Number of operations used to fill up the file system */ static unsigned int check_run_no; +static unsigned int random_seed; + /* * A buffer which is used by 'make_name()' to return the generated random name. */ @@ -260,7 +262,7 @@ static unsigned int random_no(unsigned int max) assert(max < RAND_MAX); if (max == 0) return 0; - return rand() % max; + return rand_r(&random_seed) % max; } /* @@ -2952,6 +2954,7 @@ int main(int argc, char *argv[]) { int ret; long rpt; + unsigned int pid = getpid(); ret = parse_opts(argc, argv); if (ret) @@ -2960,7 +2963,8 @@ int main(int argc, char *argv[]) get_tested_fs_info(); /* Seed the random generator with out PID */ - srand(getpid()); + srand(pid); + random_seed = pid; random_name_buf = malloc(fsinfo.max_name_len + 1); CHECK(random_name_buf != NULL); -- cgit v1.2.3