]> xenbits.xensource.com Git - libvirt.git/commitdiff
Internal driver API infrastructure for virDomainGetBlockInfo
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 27 Apr 2010 19:27:34 +0000 (20:27 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 29 Apr 2010 16:20:24 +0000 (17:20 +0100)
This defines the internal driver API and stubs out each driver

* src/driver.h: Define virDrvDomainGetBlockInfo signature
* src/libvirt.c, src/libvirt_public.syms: Glue public API to drivers
* src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
  src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
  src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
  src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub out driver

15 files changed:
src/driver.h
src/esx/esx_driver.c
src/libvirt.c
src/libvirt_public.syms
src/lxc/lxc_driver.c
src/opennebula/one_driver.c
src/openvz/openvz_driver.c
src/phyp/phyp_driver.c
src/qemu/qemu_driver.c
src/remote/remote_driver.c
src/test/test_driver.c
src/uml/uml_driver.c
src/vbox/vbox_tmpl.c
src/xen/xen_driver.c
src/xenapi/xenapi_driver.c

index f8db9c1d3d6c4c1059f7498a75a17153d1ae8b47..0975b590d85a8c36d3b32a786852fe7c1f323fad 100644 (file)
@@ -261,6 +261,12 @@ typedef int
                      unsigned long long start, size_t size,
                      void *buffer,
                      unsigned int flags);
+typedef int
+    (*virDrvDomainGetBlockInfo)
+                    (virDomainPtr domain,
+                     const char *path,
+                     virDomainBlockInfoPtr info,
+                     unsigned int flags);
 
 typedef int
     (*virDrvDomainMigratePrepare)
@@ -525,6 +531,7 @@ struct _virDriver {
     virDrvDomainMemoryStats     domainMemoryStats;
     virDrvDomainBlockPeek      domainBlockPeek;
     virDrvDomainMemoryPeek      domainMemoryPeek;
+    virDrvDomainGetBlockInfo    domainGetBlockInfo;
     virDrvNodeGetCellsFreeMemory       nodeGetCellsFreeMemory;
     virDrvNodeGetFreeMemory            getFreeMemory;
     virDrvDomainEventRegister         domainEventRegister;
index c0c31955a8b256492fc5e06359a011faf9367872..8e55fc6896cff3990f7f0523edb3e544d9ad4cdd 100644 (file)
@@ -3776,6 +3776,7 @@ static virDriver esxDriver = {
     NULL,                            /* domainMemoryStats */
     NULL,                            /* domainBlockPeek */
     NULL,                            /* domainMemoryPeek */
+    NULL,                            /* domainGetBlockInfo */
     NULL,                            /* nodeGetCellsFreeMemory */
     esxNodeGetFreeMemory,            /* nodeGetFreeMemory */
     NULL,                            /* domainEventRegister */
index ff3668132019eea634e6eda781b29c8c0965587a..028115c4508756170ededfc9fa4291c257fc97a4 100644 (file)
@@ -4625,6 +4625,55 @@ error:
 }
 
 
+/**
+ * virDomainGetBlockInfo:
+ * @domain: a domain object
+ * @path: path to the block device or file
+ * @info: pointer to a virDomainBlockInfo structure allocated by the user
+ * @flags: currently unused, pass zero
+ *
+ * Extract information about a domain's block device.
+ *
+ * Returns 0 in case of success and -1 in case of failure.
+ */
+int
+virDomainGetBlockInfo(virDomainPtr domain, const char *path, virDomainBlockInfoPtr info, unsigned int flags)
+{
+    virConnectPtr conn;
+    DEBUG("domain=%p, info=%p flags=%u", domain, info, flags);
+
+    virResetLastError();
+
+    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+        virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        virDispatchError(NULL);
+        return (-1);
+    }
+    if (info == NULL) {
+        virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
+        goto error;
+    }
+
+    memset(info, 0, sizeof(virDomainBlockInfo));
+
+    conn = domain->conn;
+
+    if (conn->driver->domainGetBlockInfo) {
+        int ret;
+        ret = conn->driver->domainGetBlockInfo (domain, path, info, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+error:
+    virDispatchError(domain->conn);
+    return -1;
+}
+
+
 /************************************************************************
  *                                                                     *
  *             Handling of defined but not running domains             *
index b4db9046406e212378dcb88d739d26a368b1c618..81465d3e1d35861b9a23afcefc0bf481fbc5b6a2 100644 (file)
@@ -394,4 +394,9 @@ LIBVIRT_0.8.0 {
 } LIBVIRT_0.7.7;
 
 
+LIBVIRT_0.8.1 {
+    global:
+        virDomainGetBlockInfo;
+} LIBVIRT_0.8.0;
+
 # .... define new API here using predicted next version number ....
index 2851a2a8ef722d625a2783142ac4037a2239222c..409b1cff426daabd6c5f2e88a83b180e8ebc7e8f 100644 (file)
@@ -2517,6 +2517,7 @@ static virDriver lxcDriver = {
     NULL, /* domainMemoryStats */
     NULL, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     nodeGetFreeMemory,  /* getFreeMemory */
     lxcDomainEventRegister, /* domainEventRegister */
index cdd61eb5a85a7fe847c2a159e7246b90c35d148c..acd52c2c95ef88fa62f6bec18cc3602ac249fac8 100644 (file)
@@ -771,6 +771,7 @@ static virDriver oneDriver = {
     NULL, /* domainMemoryStats */
     NULL, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     NULL, /* nodeGetCellsFreeMemory */
     NULL, /* getFreeMemory */
     NULL, /* domainEventRegister */
index 47004d656bb1f24b76d8dc1a6702dd16255f4e62..00b8a14bbe67811ccd4dd9426003a7cbef11c7cf 100644 (file)
@@ -1525,6 +1525,7 @@ static virDriver openvzDriver = {
     NULL, /* domainMemoryStats */
     NULL, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     NULL, /* nodeGetCellsFreeMemory */
     NULL, /* getFreeMemory */
     NULL, /* domainEventRegister */
index f4d817e35a396f188186705e12bd50ba0c5c4f2f..467ea1941183c870cc2d62f7b891001dd6b3706a 100644 (file)
@@ -1630,6 +1630,7 @@ virDriver phypDriver = {
     NULL,                       /* domainMemoryStats */
     NULL,                       /* domainBlockPeek */
     NULL,                       /* domainMemoryPeek */
+    NULL,                       /* domainGetBlockInfo */
     NULL,                       /* nodeGetCellsFreeMemory */
     NULL,                       /* getFreeMemory */
     NULL,                       /* domainEventRegister */
index 6ee5cc26a47366ff8ab2bb10cdaaad80e3ea9d72..0cac1300ee08b60f928a6aa4bcf6310126ff22c5 100644 (file)
@@ -11467,6 +11467,7 @@ static virDriver qemuDriver = {
     qemudDomainMemoryStats, /* domainMemoryStats */
     qemudDomainBlockPeek, /* domainBlockPeek */
     qemudDomainMemoryPeek, /* domainMemoryPeek */
+    NULL, /* domainBlockInfo */
     nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     nodeGetFreeMemory,  /* getFreeMemory */
     qemuDomainEventRegister, /* domainEventRegister */
index 1917f267fca38c28d4c6e0c165d168fcfc2626c5..0494d8260fc7bc51e121547b9cb20d92e66d6336 100644 (file)
@@ -10144,6 +10144,7 @@ static virDriver remote_driver = {
     remoteDomainMemoryStats, /* domainMemoryStats */
     remoteDomainBlockPeek, /* domainBlockPeek */
     remoteDomainMemoryPeek, /* domainMemoryPeek */
+    NULL, /* domainBlockInfo */
     remoteNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     remoteNodeGetFreeMemory, /* getFreeMemory */
     remoteDomainEventRegister, /* domainEventRegister */
index 4ea027919447e922c91a565c426eeff8b8f4b663..6706cba31721ea829f1dfa43da2b9616d0803829 100644 (file)
@@ -5280,6 +5280,7 @@ static virDriver testDriver = {
     NULL, /* domainMemoryStats */
     NULL, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     testNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     NULL, /* getFreeMemory */
     testDomainEventRegister, /* domainEventRegister */
index a251e894b8abdef46eb68016696b4e46fba5bb71..644ac8b355e5a5c838d73246c990ec8686776bc8 100644 (file)
@@ -1911,6 +1911,7 @@ static virDriver umlDriver = {
     NULL, /* domainMemoryStats */
     umlDomainBlockPeek, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     nodeGetFreeMemory,  /* getFreeMemory */
     NULL, /* domainEventRegister */
index f564213dc703f2c089a204e1d8028aff8116e235..6a9a2bf7fa68bce5436ac977a58f7b76c2dc7e46 100644 (file)
@@ -8164,6 +8164,7 @@ virDriver NAME(Driver) = {
     NULL, /* domainMemoryStats */
     NULL, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     nodeGetFreeMemory,  /* getFreeMemory */
 #if VBOX_API_VERSION == 2002
index b6dcf8d08d218143449437554a3faa532e120e77..91f0acd2c9a61ed82a343f8c00d6121fac1557fe 100644 (file)
@@ -1961,6 +1961,7 @@ static virDriver xenUnifiedDriver = {
     NULL, /* domainMemoryStats */
     xenUnifiedDomainBlockPeek, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     xenUnifiedNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     xenUnifiedNodeGetFreeMemory, /* getFreeMemory */
     xenUnifiedDomainEventRegister, /* domainEventRegister */
index 75796d617786a0f29998c424c61720a113180ff9..7ef03cb2f69fe8fab31459b57e21e91fb3f82021 100644 (file)
@@ -1762,6 +1762,7 @@ static virDriver xenapiDriver = {
     NULL, /* domainMemoryStats */
     NULL, /* domainBlockPeek */
     NULL, /* domainMemoryPeek */
+    NULL, /* domainGetBlockInfo */
     xenapiNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
     xenapiNodeGetFreeMemory, /* getFreeMemory */
     NULL, /* domainEventRegister */