aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-04-22 18:32:23 +0300
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-04-24 19:12:30 +0300
commit1fa184a5be96d5c927b4c64d965afd417997e8fc (patch)
tree7e8d90b3b772439092330ab42d6faca8638ab6b1
parent548a96fa716666d0bb6095f1f38aa167c47215cd (diff)
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 <Artem.Bityutskiy@nokia.com>
-rw-r--r--tests/fs-tests/integrity/integck.c8
1 files changed, 6 insertions, 2 deletions
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);