summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/fs-tests/integrity/integck.c20
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;