On 04/28/2014 12:42 PM, Jim Fehlig wrote: > With xend on the way out, installations may not even have > /usr/sbin/xend, which results in the following error when the > drivers are probed > > 2014-04-28 18:21:19.271+0000: 22129: error : virCommandWait:2426 : > internal error: Child process (/usr/sbin/xend status) unexpected exit > status 127: libvirt: error : cannot execute binary /usr/sbin/xend: > No such file or directory > > Check for existence of /usr/sbin/xend before trying to run it with > the 'status' option. > > Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> > --- > src/libxl/libxl_driver.c | 19 ++++++++++++------- > src/xen/xen_driver.c | 13 ++++++++----- > 2 files changed, 20 insertions(+), 12 deletions(-) > @@ -256,14 +255,20 @@ libxlDriverShouldLoad(bool privileged) > } > > /* Don't load if legacy xen toolstack (xend) is in use */ > - cmd = virCommandNewArgList("/usr/sbin/xend", "status", NULL); > - if (virCommandRun(cmd, &status) == 0 && status == 0) { > - VIR_INFO("Legacy xen tool stack seems to be in use, disabling " > - "libxenlight driver."); > + if (virFileExists("/usr/sbin/xend")) { > + virCommandPtr cmd; > + > + cmd = virCommandNewArgList("/usr/sbin/xend", "status", NULL); > + if (virCommandRun(cmd, &status) == 0 && status == 0) { Pre-patch, passing &status to virCommandRun had the effect of avoiding a log message if the command ran with non-zero status. But now that we are requiring the file to exist, and in particular, since we are already using NULL later on... > +++ b/src/xen/xen_driver.c > @@ -315,13 +315,16 @@ xenUnifiedProbe(void) > static bool > xenUnifiedXendProbe(void) > { > - virCommandPtr cmd; > bool ret = false; > > - cmd = virCommandNewArgList("/usr/sbin/xend", "status", NULL); > - if (virCommandRun(cmd, NULL) == 0) > - ret = true; > - virCommandFree(cmd); > + if (virFileExists("/usr/sbin/xend")) { > + virCommandPtr cmd; > + > + cmd = virCommandNewArgList("/usr/sbin/xend", "status", NULL); > + if (virCommandRun(cmd, NULL) == 0) ...here, would it make sense to use virCommandRun(cmd, NULL) instead of checking status ourselves? If the intent is still to avoid a logged message when the status is non-zero, a comment in the code might be useful (for example, see how virStorageBackendQEMUImgBackingFormat in storage_backend.c has a comment). ACK with either the code simplification or the added comment. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list