mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-10 01:17:44 +03:00
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.
This commit is contained in:
parent
927735238d
commit
fec2aa2f9e
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user