[PATCH v2 3/5] qemu_passt: Make passt report errors to stderr whenever possible
Stefano Brivio
sbrivio at redhat.com
Thu Feb 16 16:35:07 UTC 2023
On Thu, 16 Feb 2023 17:27:11 +0100
Michal Prívozník <mprivozn at redhat.com> wrote:
> On 2/16/23 17:07, Stefano Brivio wrote:
> > On Thu, 16 Feb 2023 14:32:50 +0100
> > Michal Privoznik <mprivozn at redhat.com> wrote:
> >
> >> Passt has '--stderr' argument which makes it report error onto
> >> stderr rather to system log. Unfortunately, it's currently
> >> impossible to use both '--log-file' and '--stderr', so pass the
> >> latter only if the former isn't passed. Then, use the stderr to
> >> produce more user friendly error message on failed start.
> >>
> >> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> >> ---
> >> src/qemu/qemu_passt.c | 22 +++++++++++++++++++---
> >> 1 file changed, 19 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c
> >> index c082c149cd..881205449b 100644
> >> --- a/src/qemu/qemu_passt.c
> >> +++ b/src/qemu/qemu_passt.c
> >> @@ -171,8 +171,13 @@ qemuPasstStart(virDomainObj *vm,
> >> if (net->sourceDev)
> >> virCommandAddArgList(cmd, "--interface", net->sourceDev, NULL);
> >>
> >> - if (net->backend.logFile)
> >> + if (net->backend.logFile) {
> >> virCommandAddArgList(cmd, "--log-file", net->backend.logFile, NULL);
> >> + } else {
> >> + /* By default, passt logs into system logger. But we are interested
> >> + * into errors too. Make it print errors onto stderr. */
> >> + virCommandAddArg(cmd, "--stderr");
> >> + }
> >
> > There's no need for this, see my previous email, archived at:
> > https://listman.redhat.com/archives/libvir-list/2023-February/237880.html
> >
> >>
> >> /* Add IP address info */
> >> for (i = 0; i < net->guestIP.nips; i++) {
> >> @@ -265,8 +270,19 @@ qemuPasstStart(virDomainObj *vm,
> >> goto error;
> >>
> >> if (cmdret < 0 || exitstatus != 0) {
> >> - virReportError(VIR_ERR_INTERNAL_ERROR,
> >> - _("Could not start 'passt': %s"), NULLSTR(errbuf));
> >> + if (STRNEQ_NULLABLE(errbuf, "")) {
> >> + virReportError(VIR_ERR_INTERNAL_ERROR,
> >> + _("Could not start 'passt': %s"), errbuf);
> >> + } else if (net->backend.logFile) {
> >> + virReportError(VIR_ERR_INTERNAL_ERROR,
> >> + _("Could not start 'passt': look into %s for error"),
> >> + net->backend.logFile);
> >
> > ...and this won't be needed either, with Laine's series for passt. It
> > might actually be a bit misleading.
> >
> >> + } else {
> >> + virReportError(VIR_ERR_INTERNAL_ERROR,
> >> + _("Could not start 'passt': exit status = '%d'"),
> >> + exitstatus);
> >> + }
> >> +
> >> goto error;
> >> }
> >>
> >
> > So all in all I think this is unnecessary, but also kind of harmless.
> >
>
> Except those patches are not merged yet.
Merged.
> And as we are getting close to
> the release I'd like to make this work with what we have now. We've been
> burned plenty of times with QEMU to learn our lesson. We've merged
> patches that were based not on QEMU's git, but some patches on top
> thinking - yeah, the API won't change. And then it did.
>
> Now we don't require a release (which would be ideal), but at least for
> patches to be merged. When they get merged then yeah, this can be reworked.
--
Stefano
More information about the libvir-list
mailing list