mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
Fix errno return in safezero()
Most of the safezero() implementations return -1 on error, setting errno. The safezero() impl using posix_fallocate() though returned a positive errno value on error (due to the unusual API contract of posix_fallocate() compared to most syscall APIs). * src/util/util.c: Ensure safezero() returns -1 and sets errno on error. * src/storage/storage_backend.c: Change safezero != 0 to < 0 for detecting errors
This commit is contained in:
parent
c24c07f40b
commit
a81822063d
@ -331,7 +331,7 @@ createRawFile(int fd, virStorageVolDefPtr vol,
|
||||
|
||||
if (bytes > remain)
|
||||
bytes = remain;
|
||||
if (safezero(fd, 0, vol->allocation - remain, bytes) != 0) {
|
||||
if (safezero(fd, 0, vol->allocation - remain, bytes) < 0) {
|
||||
ret = -errno;
|
||||
virReportSystemError(errno, _("cannot fill file '%s'"),
|
||||
vol->target.path);
|
||||
@ -340,7 +340,7 @@ createRawFile(int fd, virStorageVolDefPtr vol,
|
||||
remain -= bytes;
|
||||
}
|
||||
} else { /* No progress bars to be shown */
|
||||
if (safezero(fd, 0, 0, remain) != 0) {
|
||||
if (safezero(fd, 0, 0, remain) < 0) {
|
||||
ret = -errno;
|
||||
virReportSystemError(errno, _("cannot fill file '%s'"),
|
||||
vol->target.path);
|
||||
|
@ -136,7 +136,11 @@ safewrite(int fd, const void *buf, size_t count)
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
int safezero(int fd, int flags ATTRIBUTE_UNUSED, off_t offset, off_t len)
|
||||
{
|
||||
return posix_fallocate(fd, offset, len);
|
||||
int ret = posix_fallocate(fd, offset, len);
|
||||
if (ret == 0)
|
||||
return 0;
|
||||
errno = ret;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user