[libvirt] [PATCH 19/20] vbox: Introducing vboxCommonStorageDriver

Taowei uaedante at gmail.com
Wed Aug 20 12:46:33 UTC 2014


---
 src/vbox/vbox_common.c        |   63 +++++++++++++++++++++++++++++------------
 src/vbox/vbox_driver.c        |   52 ++--------------------------------
 src/vbox/vbox_tmpl.c          |   24 ----------------
 src/vbox/vbox_uniformed_api.h |   17 -----------
 4 files changed, 47 insertions(+), 109 deletions(-)

diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index e32bee5..b1136c7 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -8293,9 +8293,10 @@ static char *vboxNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags)
  * The Storage Functions here on
  */
 
-virDrvOpenStatus vboxStorageOpen(virConnectPtr conn,
-                                 virConnectAuthPtr auth ATTRIBUTE_UNUSED,
-                                 unsigned int flags)
+static virDrvOpenStatus
+vboxStorageOpen(virConnectPtr conn,
+                virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+                unsigned int flags)
 {
     vboxGlobalData *data = conn->privateData;
 
@@ -8314,14 +8315,14 @@ virDrvOpenStatus vboxStorageOpen(virConnectPtr conn,
     return VIR_DRV_OPEN_SUCCESS;
 }
 
-int vboxStorageClose(virConnectPtr conn)
+static int vboxStorageClose(virConnectPtr conn)
 {
     VIR_DEBUG("vbox storage uninitialized");
     conn->storagePrivateData = NULL;
     return 0;
 }
 
-int vboxConnectNumOfStoragePools(virConnectPtr conn ATTRIBUTE_UNUSED)
+static int vboxConnectNumOfStoragePools(virConnectPtr conn ATTRIBUTE_UNUSED)
 {
 
     /** Currently only one pool supported, the default one
@@ -8331,8 +8332,8 @@ int vboxConnectNumOfStoragePools(virConnectPtr conn ATTRIBUTE_UNUSED)
     return 1;
 }
 
-int vboxConnectListStoragePools(virConnectPtr conn ATTRIBUTE_UNUSED,
-                                char **const names, int nnames)
+static int vboxConnectListStoragePools(virConnectPtr conn ATTRIBUTE_UNUSED,
+                                       char **const names, int nnames)
 {
     int numActive = 0;
 
@@ -8342,7 +8343,8 @@ int vboxConnectListStoragePools(virConnectPtr conn ATTRIBUTE_UNUSED,
     return numActive;
 }
 
-virStoragePoolPtr vboxStoragePoolLookupByName(virConnectPtr conn, const char *name)
+static virStoragePoolPtr
+vboxStoragePoolLookupByName(virConnectPtr conn, const char *name)
 {
     virStoragePoolPtr ret = NULL;
 
@@ -8362,7 +8364,7 @@ virStoragePoolPtr vboxStoragePoolLookupByName(virConnectPtr conn, const char *na
     return ret;
 }
 
-int vboxStoragePoolNumOfVolumes(virStoragePoolPtr pool)
+static int vboxStoragePoolNumOfVolumes(virStoragePoolPtr pool)
 {
     VBOX_OBJECT_CHECK(pool->conn, int, -1);
     vboxArray hardDisks = VBOX_ARRAY_INITIALIZER;
@@ -8398,7 +8400,8 @@ int vboxStoragePoolNumOfVolumes(virStoragePoolPtr pool)
     return ret;
 }
 
-int vboxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int nnames)
+static int vboxStoragePoolListVolumes(virStoragePoolPtr pool,
+                                      char **const names, int nnames)
 {
     VBOX_OBJECT_CHECK(pool->conn, int, -1);
     vboxArray hardDisks = VBOX_ARRAY_INITIALIZER;
@@ -8449,7 +8452,8 @@ int vboxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int n
     return ret;
 }
 
-virStorageVolPtr vboxStorageVolLookupByName(virStoragePoolPtr pool, const char *name)
+static virStorageVolPtr vboxStorageVolLookupByName(virStoragePoolPtr pool,
+                                                   const char *name)
 {
     VBOX_OBJECT_CHECK(pool->conn, virStorageVolPtr, NULL);
     vboxArray hardDisks = VBOX_ARRAY_INITIALIZER;
@@ -8517,7 +8521,8 @@ virStorageVolPtr vboxStorageVolLookupByName(virStoragePoolPtr pool, const char *
     return ret;
 }
 
-virStorageVolPtr vboxStorageVolLookupByKey(virConnectPtr conn, const char *key)
+static virStorageVolPtr
+vboxStorageVolLookupByKey(virConnectPtr conn, const char *key)
 {
     VBOX_OBJECT_CHECK(conn, virStorageVolPtr, NULL);
     vboxIIDUnion hddIID;
@@ -8579,7 +8584,8 @@ virStorageVolPtr vboxStorageVolLookupByKey(virConnectPtr conn, const char *key)
     return ret;
 }
 
-virStorageVolPtr vboxStorageVolLookupByPath(virConnectPtr conn, const char *path)
+static virStorageVolPtr
+vboxStorageVolLookupByPath(virConnectPtr conn, const char *path)
 {
     VBOX_OBJECT_CHECK(conn, virStorageVolPtr, NULL);
     PRUnichar *hddPathUtf16 = NULL;
@@ -8651,7 +8657,7 @@ virStorageVolPtr vboxStorageVolLookupByPath(virConnectPtr conn, const char *path
     return ret;
 }
 
-virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
+static virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
                                         const char *xml, unsigned int flags)
 {
     VBOX_OBJECT_CHECK(pool->conn, virStorageVolPtr, NULL);
@@ -8755,7 +8761,7 @@ virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
     return ret;
 }
 
-int vboxStorageVolDelete(virStorageVolPtr vol, unsigned int flags)
+static int vboxStorageVolDelete(virStorageVolPtr vol, unsigned int flags)
 {
     VBOX_OBJECT_CHECK(vol->conn, int, -1);
     unsigned char uuid[VIR_UUID_BUFLEN];
@@ -8910,7 +8916,8 @@ int vboxStorageVolDelete(virStorageVolPtr vol, unsigned int flags)
     return ret;
 }
 
-int vboxStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info)
+static int
+vboxStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info)
 {
     VBOX_OBJECT_CHECK(vol->conn, int, -1);
     IHardDisk *hardDisk  = NULL;
@@ -8961,7 +8968,7 @@ int vboxStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info)
     return ret;
 }
 
-char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
+static char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
 {
     VBOX_OBJECT_CHECK(vol->conn, char *, NULL);
     IHardDisk *hardDisk  = NULL;
@@ -9049,7 +9056,7 @@ char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
     return ret;
 }
 
-char *vboxStorageVolGetPath(virStorageVolPtr vol)
+static char *vboxStorageVolGetPath(virStorageVolPtr vol)
 {
     VBOX_OBJECT_CHECK(vol->conn, char *, NULL);
     IHardDisk *hardDisk  = NULL;
@@ -9190,6 +9197,26 @@ virNetworkDriver vboxCommonNetworkDriver = {
     .networkGetXMLDesc = vboxNetworkGetXMLDesc, /* 0.6.4 */
 };
 
+virStorageDriver vboxCommonStorageDriver = {
+    .name               = "VBOX",
+    .storageOpen = vboxStorageOpen, /* 0.7.1 */
+    .storageClose = vboxStorageClose, /* 0.7.1 */
+    .connectNumOfStoragePools = vboxConnectNumOfStoragePools, /* 0.7.1 */
+    .connectListStoragePools = vboxConnectListStoragePools, /* 0.7.1 */
+    .storagePoolLookupByName = vboxStoragePoolLookupByName, /* 0.7.1 */
+    .storagePoolNumOfVolumes = vboxStoragePoolNumOfVolumes, /* 0.7.1 */
+    .storagePoolListVolumes = vboxStoragePoolListVolumes, /* 0.7.1 */
+
+    .storageVolLookupByName = vboxStorageVolLookupByName, /* 0.7.1 */
+    .storageVolLookupByKey = vboxStorageVolLookupByKey, /* 0.7.1 */
+    .storageVolLookupByPath = vboxStorageVolLookupByPath, /* 0.7.1 */
+    .storageVolCreateXML = vboxStorageVolCreateXML, /* 0.7.1 */
+    .storageVolDelete = vboxStorageVolDelete, /* 0.7.1 */
+    .storageVolGetInfo = vboxStorageVolGetInfo, /* 0.7.1 */
+    .storageVolGetXMLDesc = vboxStorageVolGetXMLDesc, /* 0.7.1 */
+    .storageVolGetPath = vboxStorageVolGetPath /* 0.7.1 */
+};
+
 static void updateDriver(void)
 {
     /* Update the vboxDriver according to the vboxUniformedAPI.
diff --git a/src/vbox/vbox_driver.c b/src/vbox/vbox_driver.c
index 6c86973..7874e35 100644
--- a/src/vbox/vbox_driver.c
+++ b/src/vbox/vbox_driver.c
@@ -48,19 +48,9 @@
 
 VIR_LOG_INIT("vbox.vbox_driver");
 
-extern virStorageDriver vbox22StorageDriver;
-extern virStorageDriver vbox30StorageDriver;
-extern virStorageDriver vbox31StorageDriver;
-extern virStorageDriver vbox32StorageDriver;
-extern virStorageDriver vbox40StorageDriver;
-extern virStorageDriver vbox41StorageDriver;
-extern virStorageDriver vbox42StorageDriver;
-extern virStorageDriver vbox42_20StorageDriver;
-extern virStorageDriver vbox43StorageDriver;
-extern virStorageDriver vbox43_4StorageDriver;
-
 extern virDriver vboxCommonDriver;
 extern virNetworkDriver vboxCommonNetworkDriver;
+extern virStorageDriver vboxCommonStorageDriver;
 
 static virDriver vboxDriverDummy;
 
@@ -81,7 +71,7 @@ int vboxRegister(void)
      */
     driver        = &vboxDriverDummy;
     networkDriver = &vboxCommonNetworkDriver;
-    storageDriver = &vbox22StorageDriver;
+    storageDriver = &vboxCommonStorageDriver;
 
     /* Init the glue and get the API version. */
     if (VBoxCGlueInit(&uVersion) == 0) {
@@ -91,44 +81,6 @@ int vboxRegister(void)
               uVersion % 1000,
               uVersion);
 
-        /* Select driver implementation based on version.
-         * Note that the VirtualBox development usually happens at build
-         * number 51, thus the version ranges in the if statements below.
-         */
-        if (uVersion >= 2001052 && uVersion < 2002051) {
-            VIR_DEBUG("VirtualBox API version: 2.2");
-            storageDriver = &vbox22StorageDriver;
-        } else if (uVersion >= 2002051 && uVersion < 3000051) {
-            VIR_DEBUG("VirtualBox API version: 3.0");
-            storageDriver = &vbox30StorageDriver;
-        } else if (uVersion >= 3000051 && uVersion < 3001051) {
-            VIR_DEBUG("VirtualBox API version: 3.1");
-            storageDriver = &vbox31StorageDriver;
-        } else if (uVersion >= 3001051 && uVersion < 3002051) {
-            VIR_DEBUG("VirtualBox API version: 3.2");
-            storageDriver = &vbox32StorageDriver;
-        } else if (uVersion >= 3002051 && uVersion < 4000051) {
-            VIR_DEBUG("VirtualBox API version: 4.0");
-            storageDriver = &vbox40StorageDriver;
-        } else if (uVersion >= 4000051 && uVersion < 4001051) {
-            VIR_DEBUG("VirtualBox API version: 4.1");
-            storageDriver = &vbox41StorageDriver;
-        } else if (uVersion >= 4001051 && uVersion < 4002020) {
-            VIR_DEBUG("VirtualBox API version: 4.2");
-            storageDriver = &vbox42StorageDriver;
-        } else if (uVersion >= 4002020 && uVersion < 4002051) {
-           VIR_DEBUG("VirtualBox API version: 4.2.20 or higher");
-           storageDriver  = &vbox42_20StorageDriver;
-        } else if (uVersion >= 4002051 && uVersion < 4003004) {
-            VIR_DEBUG("VirtualBox API version: 4.3");
-            storageDriver = &vbox43StorageDriver;
-        } else if (uVersion >= 4003004 && uVersion < 4003051) {
-            VIR_DEBUG("VirtualBox API version: 4.3.4 or higher");
-            storageDriver = &vbox43_4StorageDriver;
-        } else {
-            VIR_DEBUG("Unsupported VirtualBox API version: %u", uVersion);
-        }
-        /* Register vboxUniformedAPI. */
         if (vboxRegisterUniformedAPI(uVersion) == 0)
             /* Only if successfully register the uniformed api,
              * can we use the vboxCommonDriver. Or use the
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
index 73a72c7..0bce8c4 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
@@ -5116,27 +5116,3 @@ void NAME(InstallUniformedAPI)(vboxUniformedAPI *pVBoxAPI)
     pVBoxAPI->networkRemoveInterface = 1;
 #endif /* VBOX_API_VERSION > 2002000 */
 }
-
-/**
- * Function Tables
- */
-
-virStorageDriver NAME(StorageDriver) = {
-    .name               = "VBOX",
-    .storageOpen = vboxStorageOpen, /* 0.7.1 */
-    .storageClose = vboxStorageClose, /* 0.7.1 */
-    .connectNumOfStoragePools = vboxConnectNumOfStoragePools, /* 0.7.1 */
-    .connectListStoragePools = vboxConnectListStoragePools, /* 0.7.1 */
-    .storagePoolLookupByName = vboxStoragePoolLookupByName, /* 0.7.1 */
-    .storagePoolNumOfVolumes = vboxStoragePoolNumOfVolumes, /* 0.7.1 */
-    .storagePoolListVolumes = vboxStoragePoolListVolumes, /* 0.7.1 */
-
-    .storageVolLookupByName = vboxStorageVolLookupByName, /* 0.7.1 */
-    .storageVolLookupByKey = vboxStorageVolLookupByKey, /* 0.7.1 */
-    .storageVolLookupByPath = vboxStorageVolLookupByPath, /* 0.7.1 */
-    .storageVolCreateXML = vboxStorageVolCreateXML, /* 0.7.1 */
-    .storageVolDelete = vboxStorageVolDelete, /* 0.7.1 */
-    .storageVolGetInfo = vboxStorageVolGetInfo, /* 0.7.1 */
-    .storageVolGetXMLDesc = vboxStorageVolGetXMLDesc, /* 0.7.1 */
-    .storageVolGetPath = vboxStorageVolGetPath /* 0.7.1 */
-};
diff --git a/src/vbox/vbox_uniformed_api.h b/src/vbox/vbox_uniformed_api.h
index 5ec0dee..a638d5c 100644
--- a/src/vbox/vbox_uniformed_api.h
+++ b/src/vbox/vbox_uniformed_api.h
@@ -608,23 +608,6 @@ typedef struct {
 
 virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn,
                                     const unsigned char *uuid);
-virDrvOpenStatus vboxStorageOpen(virConnectPtr conn, virConnectAuthPtr auth,
-                                 unsigned int flags);
-int vboxStorageClose(virConnectPtr conn);
-int vboxConnectNumOfStoragePools(virConnectPtr conn);
-int vboxConnectListStoragePools(virConnectPtr conn, char **const names, int nnames);
-virStoragePoolPtr vboxStoragePoolLookupByName(virConnectPtr conn, const char *name);
-int vboxStoragePoolNumOfVolumes(virStoragePoolPtr pool);
-int vboxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int nnames);
-virStorageVolPtr vboxStorageVolLookupByName(virStoragePoolPtr pool, const char *name);
-virStorageVolPtr vboxStorageVolLookupByKey(virConnectPtr conn, const char *key);
-virStorageVolPtr vboxStorageVolLookupByPath(virConnectPtr conn, const char *path);
-virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
-                                         const char *xml, unsigned int flags);
-int vboxStorageVolDelete(virStorageVolPtr vol, unsigned int flags);
-int vboxStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info);
-char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags);
-char *vboxStorageVolGetPath(virStorageVolPtr vol);
 
 /* Version specified functions for installing uniformed API */
 void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);
-- 
1.7.9.5




More information about the libvir-list mailing list