
On Tue, Aug 04, 2009 at 12:29:02PM -0400, Cole Robinson wrote:
If libvirt was built against inotify, but an API user isn't using domain events (virsh, virt-manager), the xen xm driver doesn't poll /etc/xen for new config files. This means that domains created or deleted on other libvirt connections aren't reflected in the original connection (but they will show up for all newly opened connections). This causes newly created VMs to disappear from virt-manager < 0.8.0 once they are shutdown, since VMs were installed on a separate connection.
The attached patch refreshes /etc/xen in all cases, unless inotify was successfully initialized (user is using domain events).
Thanks, Cole
diff --git a/src/xm_internal.c b/src/xm_internal.c index 9d021eb..c1188fe 100644 --- a/src/xm_internal.c +++ b/src/xm_internal.c @@ -122,6 +122,19 @@ struct xenUnifiedDriver xenXMDriver = { virReportErrorHelper(conn, VIR_FROM_XENXM, code, __FILE__, \ __FUNCTION__, __LINE__, fmt)
+static int xenInotifyActive(virConnectPtr conn) +{ + int ret; +#ifndef WITH_XEN_INOTIFY + ret = 0; +#else + xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData; + ret = (priv->inotifyWatch > 0); +#endif + + return ret; +}
THis will generate an unused variable warning on 'conn'. I'd prefer to have the conditional outside the fucntion, eg #ifndef WITH_XEN_INOTIFY static int xenInotifyActive(virConnectPtr conn ATTRIBUTE_UNUSED) { return 0; } #else static int xenInotifyActive(virConnectPtr conn) { xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData; return priv->inotifyWatch > 0; } #endif ACK to the rest of the patch Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|