
On Tue, Jan 19, 2016 at 01:48:10PM +0000, Richard W.M. Jones wrote:
On Tue, Jan 19, 2016 at 01:43:58PM +0000, Daniel P. Berrange wrote:
I don't think it does. Passing GRACEFUL flag means libvirt will try /less/ hard to kill QEMU, so it is /more/ likely that you will get the
"Failed to terminate process 1275 with SIGTERM: Device or resource busy"
In general, that error message is something to be expected from the virDomainDestroy() API, as we won't wait for death forever. If an app wishes to wait forever, they should either re-issue the destroy API call, or wait for an event notification of VIR_DOMAIN_EVENT_STOPPED to arrive.
IIUC, we should trap this specific error, and then basically loop if it happens? Is there a good way to trap specific errors without trying to match error message text?
You can match on err.code==VIR_ERR_SYSTEM_ERROR & err.int1 == EBUSY The latter match is not entirely recommended, since if talking to a libvirtd on a remote host with different operating system to the client host, the errno values won't match, but I think it is fine for libguestfs which always uses a local libvirt. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|