
On Thu, Jul 25, 2013 at 07:39:35PM +0100, Daniel P. Berrange wrote:
On Thu, Jul 25, 2013 at 02:32:56PM -0400, John Ferlan wrote:
Separation allows for dependent drivers to be make a connection during the AutoStart phase of state initialization. --- src/driver.h | 4 ++++ src/libvirt.c | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/driver.h b/src/driver.h index cc03e9f..b416902 100644 --- a/src/driver.h +++ b/src/driver.h @@ -1801,6 +1801,9 @@ typedef int void *opaque);
typedef int +(*virDrvStateAutoStart)(void); +
Actually, why not just make this 'void' return value. None of the impls return any error code....
@@ -836,6 +840,23 @@ int virStateInitialize(bool privileged, } } } + + for (i = 0; i < virStateDriverTabCount; i++) { + if (virStateDriverTab[i]->stateAutoStart) { + VIR_DEBUG("Running global auto start for %s state driver", + virStateDriverTab[i]->name); + if (virStateDriverTab[i]->stateAutoStart() < 0) { + virErrorPtr err = virGetLastError(); + VIR_ERROR(_("Auto start for %s driver failed: %s"), + virStateDriverTab[i]->name, + err && err->message ? err->message : + _("Unknown problem")); + if (virStateDriverTab[i]->stateCleanup) + ignore_value(virStateDriverTab[i]->stateCleanup()); + return -1; + }
...then all this error handling goes away.
ACK
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 :|