aboutsummaryrefslogtreecommitdiff
path: root/tests/fs-tests/integrity
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-04-11 14:55:49 +0300
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-04-18 17:44:44 +0300
commit544833ec2a08fef12913c32543f2d815220d9683 (patch)
tree0a560e52a2107542a4b6c21549ea9e73c49171bd /tests/fs-tests/integrity
parent191071e9fcb711cd89c8c57e51937da525039c8b (diff)
fs-tests: integck: shrink write_info even more
The 'struct write_info' data strucutre records information about truncation, and has a separate integer field to specify if this is a truncation or not. But it is too wasteful because we have huge amount of these objects. But it is easy to notice that the 'random_seed' field is not used for truncation records, so we can use that as the truncation flag. This patch introduces MAX_RANDOM_SEED macro and when the 'random_seed' field is greater than that, we treat it as the truncation flag. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'tests/fs-tests/integrity')
-rw-r--r--tests/fs-tests/integrity/integck.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index eff7274..92e37a1 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -35,6 +35,8 @@
#define PROGRAM_NAME "integck"
#include "common.h"
+#define MAX_RANDOM_SEED 10000000
+
/* Structures to store data written to the test file system,
so that we can check whether the file system is correct. */
@@ -42,13 +44,14 @@ struct write_info /* Record of random data written into a file */
{
struct write_info *next;
off_t offset; /* Where in the file the data was written */
- size_t size; /* Number of bytes written */
- unsigned random_seed; /* Seed for rand() to create random data */
union {
off_t random_offset; /* Call rand() this number of times first */
off_t new_length; /* For truncation records new file length */
};
- int trunc; /* Records a truncation (raw_writes only) */
+ size_t size; /* Number of bytes written */
+ unsigned int random_seed; /* Seed for rand() to create random data. If
+ greater than MAX_RANDOM_SEED then this is
+ a truncation record (raw_writes only) */
};
struct dir_entry_info;
@@ -140,6 +143,14 @@ static long mem_page_size; /* Page size for mmap */
static unsigned int check_run_no;
/*
+ * Is this 'struct write_info' actually holds information about a truncation?
+ */
+static int is_truncation(struct write_info *w)
+{
+ return w->random_seed > MAX_RANDOM_SEED;
+}
+
+/*
* Allocate a buffer of 'size' bytes and fill it with zeroes.
*/
static void *zalloc(size_t size)
@@ -569,7 +580,7 @@ static void file_info_display(struct file_info *file)
wcnt = 0;
w = file->raw_writes;
while (w) {
- if (w->trunc)
+ if (is_truncation(w))
normsg(" Trunc from %u to %u",
(unsigned) w->offset, (unsigned) w->new_length);
else
@@ -834,7 +845,7 @@ static void file_mmap_write(struct file_info *file)
offset = w->offset + tests_random_no(w->size - size);
/* Write it */
- seed = tests_random_no(10000000);
+ seed = tests_random_no(MAX_RANDOM_SEED);
srand(seed);
waddr = addr + (offset - offs);
for (i = 0; i < size; i++)
@@ -860,7 +871,7 @@ static void file_write(struct file_info *file, int fd)
}
get_offset_and_size(file, &offset, &size);
- seed = tests_random_no(10000000);
+ seed = tests_random_no(MAX_RANDOM_SEED);
actual = file_write_data(file, fd, offset, size, seed);
if (offset + actual <= file->length && shrink)
@@ -924,7 +935,7 @@ static void file_truncate_info(struct file_info *file, size_t new_length)
w->next = file->raw_writes;
w->offset = file->length;
w->new_length = new_length;
- w->trunc = 1;
+ w->random_seed = MAX_RANDOM_SEED + 1;
file->raw_writes = w;
/* Update file length */
file->length = new_length;