diff options
| -rw-r--r-- | tests/fs-tests/integrity/integck.c | 20 | 
1 files changed, 16 insertions, 4 deletions
| diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c index e29db49..bfedeb2 100644 --- a/tests/fs-tests/integrity/integck.c +++ b/tests/fs-tests/integrity/integck.c @@ -35,6 +35,7 @@  #include <sys/mman.h>  #include <sys/vfs.h>  #include <sys/mount.h> +#include <sys/statvfs.h>  #include "tests.h"  #define PROGRAM_VERSION "1.1" @@ -258,6 +259,17 @@ static char *cat_paths(const char *a, const char *b)  	return str;  } +/* + * Get the free space for the tested file system. + */ +static uint64_t get_free_space(void) +{ +	struct statvfs st; + +	CHECK(statvfs(args.mount_point, &st) != -1); +	return (uint64_t)st.f_bavail * (uint64_t)st.f_frsize; +} +  static char *dir_path(struct dir_info *parent, const char *name)  {  	char *parent_path; @@ -834,7 +846,7 @@ static void file_mmap_write(struct file_info *file)  	if (!file->links)  		return; -	free_space = tests_get_free_space(); +	free_space = get_free_space();  	if (!free_space)  		return;  	/* Randomly pick a written area of the file */ @@ -1911,7 +1923,7 @@ static void create_test_data(void)  		uint64_t total;  		for (i = 0; i < 10; ++i)  			do_an_operation(); -		free = tests_get_free_space(); +		free = get_free_space();  		total = tests_get_total_space();  		if ((free * 100) / total >= 10)  			break; @@ -1942,7 +1954,7 @@ static void update_test_data(void)  		uint64_t total;  		for (i = 0; i < 10; ++i)  			do_an_operation(); -		free = tests_get_free_space(); +		free = get_free_space();  		total = tests_get_total_space();  		if ((free * 100) / total >= 50)  			break; @@ -1972,7 +1984,7 @@ static int integck(void)  		CHECK(chdir("..") != -1);  		CHECK(rmdir(dir_name) != -1);  	} -	initial_free_space = tests_get_free_space(); +	initial_free_space = get_free_space();  	log10_initial_free_space = 0;  	for (z = initial_free_space; z >= 10; z /= 10)  		++log10_initial_free_space; | 
