Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 1d34bd5ae937157c68c1d2a605bb0b67 > files > 10

libvirt-0.6.3-20.1.el5_4.src.rpm

--- orig/src/xm_internal.c	2009-08-04 12:04:03.416413000 -0400
+++ tmp/src/xm_internal.c	2009-08-04 12:04:46.813934000 -0400
@@ -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;
+}
+
 /* Convenience method to grab a int from the config file object */
 static int xenXMConfigGetBool(virConnectPtr conn,
                               virConfPtr conf,
@@ -1728,10 +1741,8 @@ virDomainPtr xenXMDomainLookupByName(vir
     priv = conn->privateData;
     xenUnifiedLock(priv);
 
-#ifndef WITH_XEN_INOTIFY
-    if (xenXMConfigCacheRefresh (conn) < 0)
+    if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh (conn) < 0)
         goto cleanup;
-#endif
 
     if (!(filename = virHashLookup(priv->nameConfigMap, domname)))
         goto cleanup;
@@ -1786,10 +1797,8 @@ virDomainPtr xenXMDomainLookupByUUID(vir
     priv = conn->privateData;
     xenUnifiedLock(priv);
 
-#ifndef WITH_XEN_INOTIFY
-    if (xenXMConfigCacheRefresh (conn) < 0)
+    if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh (conn) < 0)
         goto cleanup;
-#endif
 
     if (!(entry = virHashSearch(priv->configCache, xenXMDomainSearchForUUID, (const void *)uuid)))
         goto cleanup;
@@ -2542,12 +2551,10 @@ virDomainPtr xenXMDomainDefineXML(virCon
 
     xenUnifiedLock(priv);
 
-#ifndef WITH_XEN_INOTIFY
-    if (xenXMConfigCacheRefresh (conn) < 0) {
+    if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh (conn) < 0) {
         xenUnifiedUnlock(priv);
         return (NULL);
     }
-#endif
 
     if (!(def = virDomainDefParseString(conn, priv->caps, xml,
                                         VIR_DOMAIN_XML_INACTIVE))) {
@@ -2730,10 +2737,8 @@ int xenXMListDefinedDomains(virConnectPt
     priv = conn->privateData;
     xenUnifiedLock(priv);
 
-#ifndef WITH_XEN_INOTIFY
-    if (xenXMConfigCacheRefresh (conn) < 0)
+    if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh (conn) < 0)
         goto cleanup;
-#endif
 
     if (maxnames > virHashSize(priv->configCache))
         maxnames = virHashSize(priv->configCache);
@@ -2746,9 +2751,7 @@ int xenXMListDefinedDomains(virConnectPt
     virHashForEach(priv->nameConfigMap, xenXMListIterator, &ctx);
     ret = ctx.count;
 
-#ifndef WITH_XEN_INOTIFY
 cleanup:
-#endif
     xenUnifiedUnlock(priv);
     return ret;
 }
@@ -2769,16 +2772,12 @@ int xenXMNumOfDefinedDomains(virConnectP
     priv = conn->privateData;
     xenUnifiedLock(priv);
 
-#ifndef WITH_XEN_INOTIFY
-    if (xenXMConfigCacheRefresh (conn) < 0)
+    if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh (conn) < 0)
         goto cleanup;
-#endif
 
     ret = virHashSize(priv->nameConfigMap);
 
-#ifndef WITH_XEN_INOTIFY
 cleanup:
-#endif
     xenUnifiedUnlock(priv);
     return ret;
 }