]> www.infradead.org Git - mtd-utils.git/commitdiff
fs-tests: use independent random generators for ops and data
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Fri, 22 Apr 2011 15:32:23 +0000 (18:32 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Sun, 24 Apr 2011 16:12:30 +0000 (19:12 +0300)
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>
tests/fs-tests/integrity/integck.c

index fbd6cc5c656aa6bd65fd364232d293374db0c044..5fb990e0740d060a1b5676187a47234dcaca6048 100644 (file)
@@ -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);