Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP3:Update
libvirt.29542
cd7acb33-virfile-report-error.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File cd7acb33-virfile-report-error.patch of Package libvirt.29542
commit cd7acb33231837c4bcf6ccbd7d451e145b5f3667 Author: Michal Prívozník <mprivozn@redhat.com> Date: Mon Mar 28 13:29:19 2022 +0200 virfile: Report error when changing pipe size fails When changing the size of pipe that virFileWrapperFdNew() creates we start at 1MiB and if that fails because it's above the system wide limit we get EPERM and continue with half of the size. However, we might get another error in which case we should report proper system error and return failure from virFileWrapperFdNew(). Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Index: libvirt-7.1.0/src/util/virfile.c =================================================================== --- libvirt-7.1.0.orig/src/util/virfile.c +++ libvirt-7.1.0/src/util/virfile.c @@ -217,7 +217,7 @@ struct _virFileWrapperFd { * * OS note: only for linux, on other OS this is a no-op. */ -static void +static int virFileWrapperSetPipeSize(int fd) { int sz; @@ -230,21 +230,24 @@ virFileWrapperSetPipeSize(int fd) continue; /* retry with half the size */ } if (rv < 0) { - break; + virReportSystemError(errno, "%s", + _("unable to set pipe size")); + return -1; } VIR_DEBUG("fd %d pipe size adjusted to %d", fd, sz); - return; + return 0; } VIR_WARN("unable to set pipe size, data transfer might be slow: %s", g_strerror(errno)); + return 0; } # else /* !__linux__ */ -static void +static int virFileWrapperSetPipeSize(int fd G_GNUC_UNUSED) { - return; + return 0; } # endif /* !__linux__ */ @@ -323,6 +326,9 @@ virFileWrapperFdNew(int *fd, const char if (virPipe(pipefd) < 0) goto error; + if (virFileWrapperSetPipeSize(pipefd[output]) < 0) + goto error; + if (!(iohelper_path = virFileFindResource("libvirt_iohelper", abs_top_builddir "/src", LIBEXECDIR))) @@ -330,8 +336,6 @@ virFileWrapperFdNew(int *fd, const char ret->cmd = virCommandNewArgList(iohelper_path, name, NULL); - virFileWrapperSetPipeSize(pipefd[output]); - if (output) { virCommandSetInputFD(ret->cmd, pipefd[0]); virCommandSetOutputFD(ret->cmd, fd);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor