On Thu, Sep 10, 2009 at 02:31:00PM +0100, Daniel P. Berrange wrote:
Remove the bogus dependancy between node_device.c &
storage_backend.c
by moving the virWaitForDevices into util.h where it can be shared
safely
* src/storage_backend_disk.c, src/storage_backend_logical.c,
src/storage_backend_mpath.c, src/storage_backend_scsi.c: Replace
virStorageBackendWaitForDevices with virFileWaitForDevices
* src/storage_backend.c, src/storage_backend.h: Remove
virStorageBackendWaitForDevices, virWaitForDevices
* src/util.h, src/util.c: Add virFileWaitForDevices
* configure.in: Move xmlrpc check further down after pkgconfig
is detected
* src/Makefile.am: Add missing XMLRPC_CFLAGS/LIBS to opennebula
* src/libvirt_private.syms: Add many missing exports
---
configure.in | 6 +++---
src/Makefile.am | 4 ++--
src/libvirt_private.syms | 14 +++++++++++++-
src/node_device.c | 4 ++--
src/storage_backend.c | 31 -------------------------------
src/storage_backend.h | 2 --
src/storage_backend_disk.c | 4 ++--
src/storage_backend_logical.c | 2 +-
src/storage_backend_mpath.c | 2 +-
src/storage_backend_scsi.c | 4 ++--
src/util.c | 27 +++++++++++++++++++++++++++
src/util.h | 2 ++
12 files changed, 55 insertions(+), 47 deletions(-)
diff --git a/configure.in b/configure.in
index 060eb50..120f7e7 100644
--- a/configure.in
+++ b/configure.in
@@ -463,6 +463,9 @@ if test "$with_qemu" = "yes" -o
"$with_lxc" = "yes" ; then
fi
+dnl Need to test if pkg-config exists
+PKG_PROG_PKG_CONFIG
+
dnl OpenNebula driver Compilation setting
dnl
@@ -491,9 +494,6 @@ AC_SUBST([XMLRPC_CFLAGS])
AC_SUBST([XMLRPC_LIBS])
-dnl Need to test if pkg-config exists
-PKG_PROG_PKG_CONFIG
-
dnl ==========================================================================
dnl find libxml2 library, borrowed from xmlsec
dnl ==========================================================================
diff --git a/src/Makefile.am b/src/Makefile.am
index 628edc5..02c1f74 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -396,8 +396,8 @@ noinst_LTLIBRARIES += libvirt_driver_one.la
# Stateful, so linked to daemon instead
#libvirt_la_LIBADD += libvirt_driver_one.la
endif
-libvirt_driver_one_la_CFLAGS = $(ONE_LIBS)
-libvirt_driver_one_la_LDFLAGS = $(ONE_LIBS)
+libvirt_driver_one_la_CFLAGS = $(XMLRPC_CFLAGS)
+libvirt_driver_one_la_LDFLAGS = $(XMLRPC_LIBS)
#libvirt_driver_one_la_CFLAGS = "-DWITH_ONE"
if WITH_DRIVER_MODULES
libvirt_driver_one_la_LDFLAGS += -module -avoid-version
Okay, those 2 are really unrelated, but ACK
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 8dd279d..06192fc 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -10,6 +10,7 @@ virBufferAdd;
virBufferAddChar;
virBufferContentAndReset;
virBufferError;
+virBufferURIEncodeString;
# caps.h
@@ -167,7 +168,16 @@ virHashSize;
virInterfaceDefFormat;
virInterfaceDefParseFile;
virInterfaceDefParseString;
+virInterfaceDefParseNode;
virInterfaceDefFree;
+virInterfaceFindByName;
+virInterfaceFindByMACString;
+virInterfaceAssignDef;
+virInterfaceRemove;
+virInterfaceObjLock;
+virInterfaceObjUnlock;
+virInterfaceObjListFree;
+
# interface_driver.h
interfaceRegister;
@@ -214,6 +224,7 @@ virRegisterNetworkDriver;
virRegisterStateDriver;
virRegisterStorageDriver;
virRegisterDeviceMonitor;
+virRegisterSecretDriver;
# logging.h
@@ -410,6 +421,7 @@ virGetUserName;
virGetUserID;
virGetGroupID;
virFileFindMountPoint;
+virFileWaitForDevices;
# uuid.h
@@ -421,7 +433,7 @@ virUUIDParse;
# virterror_internal.h
virReportErrorHelper;
virErrorMsg;
-virRaiseError;
+virRaiseErrorFull;
virReportSystemErrorFull;
virReportOOMErrorFull;
virStrerror;
ACK
diff --git a/src/node_device.c b/src/node_device.c
index ded203f..69e15b6 100644
--- a/src/node_device.c
+++ b/src/node_device.c
@@ -35,7 +35,7 @@
#include "node_device_conf.h"
#include "node_device_hal.h"
#include "node_device.h"
-#include "storage_backend.h" /* For virWaitForDevices */
+#include "util.h"
#define VIR_FROM_THIS VIR_FROM_NODEDEV
@@ -599,7 +599,7 @@ find_new_device(virConnectPtr conn, const char *wwnn, const char
*wwpn)
while ((now - start) < LINUX_NEW_DEVICE_WAIT_TIME) {
- virWaitForDevices(conn);
+ virFileWaitForDevices(conn);
dev = nodeDeviceLookupByWWN(conn, wwnn, wwpn);
diff --git a/src/storage_backend.c b/src/storage_backend.c
index 5e04f35..0a20255 100644
--- a/src/storage_backend.c
+++ b/src/storage_backend.c
@@ -630,31 +630,6 @@ virStorageBackendGetBuildVolFromFunction(virConnectPtr conn,
return virStorageBackendCreateRaw;
}
-#if defined(UDEVADM) || defined(UDEVSETTLE)
-void virWaitForDevices(virConnectPtr conn)
-{
-#ifdef UDEVADM
- const char *const settleprog[] = { UDEVADM, "settle", NULL };
-#else
- const char *const settleprog[] = { UDEVSETTLE, NULL };
-#endif
- int exitstatus;
-
- if (access(settleprog[0], X_OK) != 0)
- return;
-
- /*
- * NOTE: we ignore errors here; this is just to make sure that any device
- * nodes that are being created finish before we try to scan them.
- * If this fails for any reason, we still have the backup of polling for
- * 5 seconds for device nodes.
- */
- virRun(conn, settleprog, &exitstatus);
-}
-#else
-void virWaitForDevices(virConnectPtr conn ATTRIBUTE_UNUSED) {}
-#endif
-
virStorageBackendPtr
virStorageBackendForType(int type) {
@@ -893,12 +868,6 @@ virStorageBackendUpdateVolTargetFormatFD(virConnectPtr conn,
}
-void virStorageBackendWaitForDevices(virConnectPtr conn)
-{
- virWaitForDevices(conn);
- return;
-}
-
/*
* Given a volume path directly in /dev/XXX, iterate over the
* entries in the directory pool->def->target.path and find the
diff --git a/src/storage_backend.h b/src/storage_backend.h
index eb5bf87..88c6161 100644
--- a/src/storage_backend.h
+++ b/src/storage_backend.h
@@ -95,7 +95,6 @@ int
virStorageBackendUpdateVolTargetFormatFD(virConnectPtr conn,
virStorageVolTargetPtr target,
int fd);
-void virStorageBackendWaitForDevices(virConnectPtr conn);
char *virStorageBackendStablePath(virConnectPtr conn,
virStoragePoolObjPtr pool,
@@ -128,6 +127,5 @@ int virStorageBackendRunProgNul(virConnectPtr conn,
virStorageBackendListVolNulFunc func,
void *data);
-void virWaitForDevices(virConnectPtr conn);
#endif /* __VIR_STORAGE_BACKEND_H__ */
diff --git a/src/storage_backend_disk.c b/src/storage_backend_disk.c
index 6fdb566..e82959c 100644
--- a/src/storage_backend_disk.c
+++ b/src/storage_backend_disk.c
@@ -325,7 +325,7 @@ virStorageBackendDiskRefreshPool(virConnectPtr conn,
VIR_FREE(pool->def->source.devices[0].freeExtents);
pool->def->source.devices[0].nfreeExtent = 0;
- virStorageBackendWaitForDevices(conn);
+ virFileWaitForDevices(conn);
if (virStorageBackendDiskReadGeometry(conn, pool) != 0) {
return -1;
@@ -583,7 +583,7 @@ virStorageBackendDiskCreateVol(virConnectPtr conn,
return -1;
/* wait for device node to show up */
- virStorageBackendWaitForDevices(conn);
+ virFileWaitForDevices(conn);
/* Blow away free extent info, as we're about to re-populate it */
VIR_FREE(pool->def->source.devices[0].freeExtents);
diff --git a/src/storage_backend_logical.c b/src/storage_backend_logical.c
index 43117e8..4389120 100644
--- a/src/storage_backend_logical.c
+++ b/src/storage_backend_logical.c
@@ -478,7 +478,7 @@ virStorageBackendLogicalRefreshPool(virConnectPtr conn,
};
int exitstatus;
- virStorageBackendWaitForDevices(conn);
+ virFileWaitForDevices(conn);
/* Get list of all logical volumes */
if (virStorageBackendLogicalFindLVs(conn, pool, NULL) < 0) {
diff --git a/src/storage_backend_mpath.c b/src/storage_backend_mpath.c
index ae02aac..fcc38ba 100644
--- a/src/storage_backend_mpath.c
+++ b/src/storage_backend_mpath.c
@@ -332,7 +332,7 @@ virStorageBackendMpathRefreshPool(virConnectPtr conn,
pool->def->allocation = pool->def->capacity = pool->def->available
= 0;
- virStorageBackendWaitForDevices(conn);
+ virFileWaitForDevices(conn);
virStorageBackendGetMaps(conn, pool);
diff --git a/src/storage_backend_scsi.c b/src/storage_backend_scsi.c
index a09103f..c70b1ed 100644
--- a/src/storage_backend_scsi.c
+++ b/src/storage_backend_scsi.c
@@ -494,7 +494,7 @@ virStorageBackendSCSIFindLUs(virConnectPtr conn,
VIR_DEBUG(_("Discovering LUs on host %u"), scanhost);
- virStorageBackendWaitForDevices(conn);
+ virFileWaitForDevices(conn);
if (virAsprintf(&device_path, "/sys/bus/scsi/devices") < 0) {
virReportOOMError(conn);
@@ -542,7 +542,7 @@ virStorageBackendSCSIGetHostNumber(virConnectPtr conn,
VIR_DEBUG(_("Finding host number from '%s'"), sysfs_path);
- virStorageBackendWaitForDevices(conn);
+ virFileWaitForDevices(conn);
sysdir = opendir(sysfs_path);
diff --git a/src/util.c b/src/util.c
index af50028..1878e33 100644
--- a/src/util.c
+++ b/src/util.c
@@ -2019,3 +2019,30 @@ cleanup:
return ret;
}
#endif
+
+#ifndef PROXY
+#if defined(UDEVADM) || defined(UDEVSETTLE)
+void virFileWaitForDevices(virConnectPtr conn)
+{
+#ifdef UDEVADM
+ const char *const settleprog[] = { UDEVADM, "settle", NULL };
+#else
+ const char *const settleprog[] = { UDEVSETTLE, NULL };
+#endif
+ int exitstatus;
+
+ if (access(settleprog[0], X_OK) != 0)
+ return;
+
+ /*
+ * NOTE: we ignore errors here; this is just to make sure that any device
+ * nodes that are being created finish before we try to scan them.
+ * If this fails for any reason, we still have the backup of polling for
+ * 5 seconds for device nodes.
+ */
+ virRun(conn, settleprog, &exitstatus);
+}
+#else
+void virFileWaitForDevices(virConnectPtr conn ATTRIBUTE_UNUSED) {}
+#endif
+#endif
diff --git a/src/util.h b/src/util.h
index 896e1b4..f9715ab 100644
--- a/src/util.h
+++ b/src/util.h
@@ -237,4 +237,6 @@ int virRandom(int max);
char *virFileFindMountPoint(const char *type);
#endif
+void virFileWaitForDevices(virConnectPtr conn);
+
#endif /* __VIR_UTIL_H__ */
--
1.6.2.5
Okay, refactoring is fine, ACK
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/