From 964a606dca4e21ba050f1a887b85429ce72a5711 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Sat, 14 Apr 2012 14:40:16 +0200 Subject: [PATCH] journal: Make the default keep_free size follow the filesystem reserved blocks Instead of using a hard-coded default of having the journal not fill up the last 5% of the filesystem make the default follow the filesystem reserved block setting. --- src/journal/journal-file.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index a60a896..eead606 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -2200,14 +2200,17 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6 void journal_default_metrics(JournalMetrics *m, int fd) { uint64_t fs_size = 0; + uint64_t reserved_size = 0; struct statvfs ss; char a[FORMAT_BYTES_MAX], b[FORMAT_BYTES_MAX], c[FORMAT_BYTES_MAX], d[FORMAT_BYTES_MAX]; assert(m); assert(fd >= 0); - if (fstatvfs(fd, &ss) >= 0) + if (fstatvfs(fd, &ss) >= 0) { fs_size = ss.f_frsize * ss.f_blocks; + reserved_size = (ss.f_bfree - ss.f_bavail) * ss.f_bsize; + } if (m->max_use == (uint64_t) -1) { @@ -2256,8 +2259,9 @@ void journal_default_metrics(JournalMetrics *m, int fd) { if (m->keep_free == (uint64_t) -1) { - if (fs_size > 0) { - m->keep_free = PAGE_ALIGN(fs_size / 20); /* 5% of file system size */ + if (fs_size > 0 && reserved_size > 0) { + m->keep_free = reserved_size; /* reserved size of + priviledged users*/ if (m->keep_free > DEFAULT_KEEP_FREE_UPPER) m->keep_free = DEFAULT_KEEP_FREE_UPPER; -- 1.7.10