diff --git a/configure.in b/configure.in index 060eb50a190531b31f7dba684e724f5a9c06a5e1..120f7e7ea2896f026c66d0546820be02727ec890 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 8bdfe3cf78fd54bdb626b0c7a9e024de3227560e..2a047cda1320362e1c59772c0cea4819d18b1d6d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -397,8 +397,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 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 16bdc3f89c472c25b416de6e506fdddc5c2e5036..a238652951b725b3f26a37636bad4f5fc44b3262 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 @@ -412,6 +423,7 @@ virGetUserName; virGetUserID; virGetGroupID; virFileFindMountPoint; +virFileWaitForDevices; # usb.h usbGetDevice; @@ -427,7 +439,7 @@ virUUIDParse; # virterror_internal.h virReportErrorHelper; virErrorMsg; -virRaiseError; +virRaiseErrorFull; virReportSystemErrorFull; virReportOOMErrorFull; virStrerror; diff --git a/src/node_device.c b/src/node_device.c index ded203f5576ccc8a7e0a65bff2caa9d9ecc3be3c..69e15b66a2840a9a6ab60c9d778bcab2c3dec950 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 5e04f35c147a907987040ca8c7af1cbe668bb804..0a20255a573a6c5e53c03259362e3ad46441b076 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 eb5bf87f19e21d32fb0220946b7733c0c1d3e613..88c6161371b66d34e9f036cf9bf07295e091c683 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 6fdb56647c63a9e33701bf681ac281a7767a4e23..e82959cca6ea55b331e2ab911f8dea8a65be4da7 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 43117e856725cd75dd35532f8e151b1269df88cf..4389120815639a804f42b650edea55ee9ab3e6f5 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 ae02aacc0ebe52e087d8eaa9e4ba5aae346bc548..fcc38bad8683fa0511a9ba80d232645d78352c7c 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 a09103fd292a90d98f1534ce4cd5e9ddb307b97c..c70b1edb57f86cbe3293080894e2b34c0e9b9450 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 af50028c1db050b4e6713ebcd67a3cd1d85b42e5..1878e33cac6099e880d6f1dcc5ac26b3229d69a0 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 896e1b4af86bc519e206792d6350034a34dabdd5..f9715ab52bb1a3bb47e8d6ce615720874a60edfd 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__ */