summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillermo Vidal <guillermo.vidal@continental-corporation.com>2012-05-09 13:43:34 -0500
committerLennart Poettering <lennart@poettering.net>2012-05-22 01:45:11 +0200
commitfec2aa2f9ee0748fdb7148613b8a359d246cc32a (patch)
tree49373b47687501de910a93d0f80090a88048295f
parent927735238d1cfe9bd9d9db71025e801c391cb156 (diff)
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.
-rw-r--r--src/journal/journal-file.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index a60a896c2f..5dd6e575fb 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;