From fec2aa2f9ee0748fdb7148613b8a359d246cc32a Mon Sep 17 00:00:00 2001 From: Guillermo Vidal Date: Wed, 9 May 2012 13:43:34 -0500 Subject: [PATCH] Fixed handling of posix_fallocate() returned value According to the man pages of posix_fallocate, it returns zero on success or an error number on failure; however, errno is not set on failure. If the kernel or a library other than glibc does not support the function for example, EOPNOTSUPP will be returned and the error will not be handled properly with original code. --- src/journal/journal-file.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index a60a896c2f3..5dd6e575fb9 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -188,6 +188,7 @@ static int journal_file_verify_header(JournalFile *f) { static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { uint64_t old_size, new_size; + int r; assert(f); @@ -232,8 +233,9 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) /* Note that the glibc fallocate() fallback is very inefficient, hence we try to minimize the allocation area as we can. */ - if (posix_fallocate(f->fd, old_size, new_size - old_size) < 0) - return -errno; + r = posix_fallocate(f->fd, old_size, new_size - old_size); + if (r != 0) + return -r; if (fstat(f->fd, &f->last_stat) < 0) return -errno; -- 2.39.2