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 :|