diff options
Diffstat (limited to 'tests/fs-tests/integrity')
| -rw-r--r-- | tests/fs-tests/integrity/integck.c | 25 | 
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; | 
