]> xenbits.xensource.com Git - libvirt.git/commitdiff
libvirt: implements virDomain{Get,Set}BlkioParameters
authorGui Jianfeng <guijianfeng@cn.fujitsu.com>
Tue, 22 Feb 2011 05:31:57 +0000 (13:31 +0800)
committerEric Blake <eblake@redhat.com>
Fri, 11 Mar 2011 00:53:33 +0000 (17:53 -0700)
Implements virDomainSetBlkioParameters and virDomainGetBlkioParameters and initialization

Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
16 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/vmware/vmware_driver.c
src/xen/xen_driver.c
src/xenapi/xenapi_driver.c

index da792d004014c8be0b2d127851772c8ca6ed1573..6a8332514a1804cadc9d1745a93991a066f22c54 100644 (file)
@@ -149,6 +149,18 @@ typedef int
                                          virMemoryParameterPtr params,
                                          int *nparams,
                                          unsigned int flags);
+typedef int
+        (*virDrvDomainSetBlkioParameters)
+                                        (virDomainPtr domain,
+                                         virBlkioParameterPtr params,
+                                         int nparams,
+                                         unsigned int flags);
+typedef int
+        (*virDrvDomainGetBlkioParameters)
+                                        (virDomainPtr domain,
+                                         virBlkioParameterPtr params,
+                                         int *nparams,
+                                         unsigned int flags);
 typedef int
         (*virDrvDomainGetInfo)         (virDomainPtr domain,
                                          virDomainInfoPtr info);
@@ -541,6 +553,10 @@ struct _virDriver {
     virDrvDomainSetMaxMemory   domainSetMaxMemory;
     virDrvDomainSetMemory              domainSetMemory;
     virDrvDomainSetMemoryFlags  domainSetMemoryFlags;
+    virDrvDomainSetMemoryParameters domainSetMemoryParameters;
+    virDrvDomainGetMemoryParameters domainGetMemoryParameters;
+    virDrvDomainSetBlkioParameters domainSetBlkioParameters;
+    virDrvDomainGetBlkioParameters domainGetBlkioParameters;
     virDrvDomainGetInfo                domainGetInfo;
     virDrvDomainSave           domainSave;
     virDrvDomainRestore                domainRestore;
@@ -616,8 +632,6 @@ struct _virDriver {
     virDrvDomainRevertToSnapshot domainRevertToSnapshot;
     virDrvDomainSnapshotDelete domainSnapshotDelete;
     virDrvQemuDomainMonitorCommand qemuDomainMonitorCommand;
-    virDrvDomainSetMemoryParameters domainSetMemoryParameters;
-    virDrvDomainGetMemoryParameters domainGetMemoryParameters;
     virDrvDomainOpenConsole domainOpenConsole;
 };
 
index 37e104e902fba04496a27da19e6a958322f999c1..4f013e8028947395a88328143c75b97fb449226b 100644 (file)
@@ -4594,6 +4594,10 @@ static virDriver esxDriver = {
     esxDomainSetMaxMemory,           /* domainSetMaxMemory */
     esxDomainSetMemory,              /* domainSetMemory */
     NULL,                            /* domainSetMemoryFlags */
+    esxDomainSetMemoryParameters,    /* domainSetMemoryParameters */
+    esxDomainGetMemoryParameters,    /* domainGetMemoryParameters */
+    NULL,                            /* domainSetBlkioParameters */
+    NULL,                            /* domainGetBlkioParameters */
     esxDomainGetInfo,                /* domainGetInfo */
     NULL,                            /* domainSave */
     NULL,                            /* domainRestore */
@@ -4669,8 +4673,6 @@ static virDriver esxDriver = {
     esxDomainRevertToSnapshot,       /* domainRevertToSnapshot */
     esxDomainSnapshotDelete,         /* domainSnapshotDelete */
     NULL,                            /* qemuDomainMonitorCommand */
-    esxDomainSetMemoryParameters,    /* domainSetMemoryParameters */
-    esxDomainGetMemoryParameters,    /* domainGetMemoryParameters */
     NULL,                            /* domainOpenConsole */
 };
 
index 1b3b884b215bd63fccbb809582c3ada4e407acf8..caa109dd7852358f37422a222c22bd46ad3ab622 100644 (file)
@@ -2907,7 +2907,6 @@ error:
     return -1;
 }
 
-
 /**
  * virDomainSetMemoryParameters:
  * @domain: pointer to domain object
@@ -3034,6 +3033,114 @@ error:
     return -1;
 }
 
+/**
+ * virDomainSetBlkioParameters:
+ * @domain: pointer to domain object
+ * @params: pointer to blkio parameter objects
+ * @nparams: number of blkio parameters (this value should be same or
+ *          less than the number of parameters supported)
+ * @flags: currently unused, for future extension
+ *
+ * Change the blkio tunables
+ * This function requires privileged access to the hypervisor.
+ *
+ * Returns -1 in case of error, 0 in case of success.
+ */
+int
+virDomainSetBlkioParameters(virDomainPtr domain,
+                             virBlkioParameterPtr params,
+                             int nparams, unsigned int flags)
+{
+    virConnectPtr conn;
+
+    VIR_DOMAIN_DEBUG(domain, "params=%p, nparams=%d, flags=%u",
+                     params, nparams, flags);
+
+    virResetLastError();
+
+    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        virDispatchError(NULL);
+        return -1;
+    }
+    if (domain->conn->flags & VIR_CONNECT_RO) {
+        virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+        goto error;
+    }
+    if ((nparams <= 0) || (params == NULL)) {
+        virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+        goto error;
+    }
+    conn = domain->conn;
+
+    if (conn->driver->domainSetBlkioParameters) {
+        int ret;
+        ret = conn->driver->domainSetBlkioParameters (domain, params, nparams, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virLibConnError(VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+error:
+    virDispatchError(domain->conn);
+    return -1;
+}
+
+/**
+ * virDomainGetBlkioParameters:
+ * @domain: pointer to domain object
+ * @params: pointer to blkio parameter object
+ *          (return value, allocated by the caller)
+ * @nparams: pointer to number of blkio parameters
+ * @flags: currently unused, for future extension
+ *
+ * Get the blkio parameters, the @params array will be filled with the values
+ * equal to the number of parameters suggested by @nparams
+ *
+ * This function requires privileged access to the hypervisor. This function
+ * expects the caller to allocate the @params.
+ *
+ * Returns -1 in case of error, 0 in case of success.
+ */
+int
+virDomainGetBlkioParameters(virDomainPtr domain,
+                             virBlkioParameterPtr params,
+                             int *nparams, unsigned int flags)
+{
+    virConnectPtr conn;
+
+    VIR_DOMAIN_DEBUG(domain, "params=%p, nparams=%d, flags=%u",
+                     params, (nparams) ? *nparams : -1, flags);
+
+    virResetLastError();
+
+    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        virDispatchError(NULL);
+        return -1;
+    }
+    if ((nparams == NULL) || (*nparams < 0)) {
+        virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+        goto error;
+    }
+    conn = domain->conn;
+
+    if (conn->driver->domainGetBlkioParameters) {
+        int ret;
+        ret = conn->driver->domainGetBlkioParameters (domain, params, nparams, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+    virLibConnError (VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+error:
+    virDispatchError(domain->conn);
+    return -1;
+}
+
 /**
  * virDomainGetInfo:
  * @domain: a domain object
index cfbd8dfe2991c237d2a71a293cebf7a97a45cb04..c027bf73c5870d102269ac11c47454815f314187 100644 (file)
@@ -426,6 +426,8 @@ LIBVIRT_0.8.8 {
 
 LIBVIRT_0.9.0 {
     global:
+        virDomainGetBlkioParameters;
+        virDomainSetBlkioParameters;
         virDomainSetMemoryFlags;
         virEventRegisterDefaultImpl;
         virEventRunDefaultImpl;
index 4ddeffd50e27e0dd900dda0fd9ccd4ee1c2dfbff..f99c99b27e09a264f05e1f3ee36db52f9e4e0090 100644 (file)
@@ -2852,6 +2852,10 @@ static virDriver lxcDriver = {
     lxcDomainSetMaxMemory, /* domainSetMaxMemory */
     lxcDomainSetMemory, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    lxcDomainSetMemoryParameters, /* domainSetMemoryParameters */
+    lxcDomainGetMemoryParameters, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     lxcDomainGetInfo, /* domainGetInfo */
     NULL, /* domainSave */
     NULL, /* domainRestore */
@@ -2927,8 +2931,6 @@ static virDriver lxcDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    lxcDomainSetMemoryParameters, /* domainSetMemoryParameters */
-    lxcDomainGetMemoryParameters, /* domainGetMemoryParameters */
     lxcDomainOpenConsole, /* domainOpenConsole */
 };
 
index 163d0081496d6f5e0e30e4df9795b3a74e49e1ab..f3c71add0c04573d0fb4d03538f8b3ef70394660 100644 (file)
@@ -751,6 +751,10 @@ static virDriver oneDriver = {
     NULL, /* domainSetMaxMemory */
     NULL, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     oneDomainGetInfo, /* domainGetInfo */
     NULL, /* domainSave */
     NULL, /* domainRestore */
@@ -826,8 +830,6 @@ static virDriver oneDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParameters */
-    NULL, /* domainGetMemoryParameters */
     NULL, /* domainOpenConsole */
 };
 
index 7119bde62096f18d9f543a76ef327f3f12da4e9f..0d64e1910ed0be9aeabd20a7fd369d3cc222d32f 100644 (file)
@@ -1572,6 +1572,10 @@ static virDriver openvzDriver = {
     NULL, /* domainSetMaxMemory */
     NULL, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     openvzDomainGetInfo, /* domainGetInfo */
     NULL, /* domainSave */
     NULL, /* domainRestore */
@@ -1647,8 +1651,6 @@ static virDriver openvzDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParameters */
-    NULL, /* domainGetMemoryParameters */
     NULL, /* domainOpenConsole */
 };
 
index 84323a7e0b9195d7b1ef7856e7fa7f8501edb57e..b06b3b3e1eb4b40e08877e94799e47bf6ff158da 100644 (file)
@@ -3974,6 +3974,10 @@ static virDriver phypDriver = {
     NULL,                       /* domainSetMaxMemory */
     NULL,                       /* domainSetMemory */
     NULL,                       /* domainSetMemoryFlags */
+    NULL,                       /* domainSetMemoryParameters */
+    NULL,                       /* domainGetMemoryParameters */
+    NULL,                       /* domainSetBlkioParameters */
+    NULL,                       /* domainGetBlkioParameters */
     phypDomainGetInfo,          /* domainGetInfo */
     NULL,                       /* domainSave */
     NULL,                       /* domainRestore */
@@ -4049,8 +4053,6 @@ static virDriver phypDriver = {
     NULL,                       /* domainRevertToSnapshot */
     NULL,                       /* domainSnapshotDelete */
     NULL,                       /* qemuMonitorCommand */
-    NULL,                       /* domainSetMemoryParameters */
-    NULL,                       /* domainGetMemoryParameters */
     NULL, /* domainOpenConsole */
 };
 
index 7921d98737e35c8131d0bb612834f1d6b7acef6c..21180aafa6863add93124c86aa334e8567a0999e 100644 (file)
@@ -6887,6 +6887,10 @@ static virDriver qemuDriver = {
     NULL, /* domainSetMaxMemory */
     qemudDomainSetMemory, /* domainSetMemory */
     qemudDomainSetMemoryFlags, /* domainSetMemoryFlags */
+    qemuDomainSetMemoryParameters, /* domainSetMemoryParameters */
+    qemuDomainGetMemoryParameters, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     qemudDomainGetInfo, /* domainGetInfo */
     qemudDomainSave, /* domainSave */
     qemudDomainRestore, /* domainRestore */
@@ -6962,8 +6966,6 @@ static virDriver qemuDriver = {
     qemuDomainRevertToSnapshot, /* domainRevertToSnapshot */
     qemuDomainSnapshotDelete, /* domainSnapshotDelete */
     qemuDomainMonitorCommand, /* qemuDomainMonitorCommand */
-    qemuDomainSetMemoryParameters, /* domainSetMemoryParameters */
-    qemuDomainGetMemoryParameters, /* domainGetMemoryParameters */
     qemuDomainOpenConsole, /* domainOpenConsole */
 };
 
index 796e06d79ff6b05e56b918f6d39b661ca1150c13..2c257e147657a180f5b996dd8ccae122e7c720eb 100644 (file)
@@ -10904,6 +10904,10 @@ static virDriver remote_driver = {
     remoteDomainSetMaxMemory, /* domainSetMaxMemory */
     remoteDomainSetMemory, /* domainSetMemory */
     remoteDomainSetMemoryFlags, /* domainSetMemoryFlags */
+    remoteDomainSetMemoryParameters, /* domainSetMemoryParameters */
+    remoteDomainGetMemoryParameters, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     remoteDomainGetInfo, /* domainGetInfo */
     remoteDomainSave, /* domainSave */
     remoteDomainRestore, /* domainRestore */
@@ -10979,8 +10983,6 @@ static virDriver remote_driver = {
     remoteDomainRevertToSnapshot, /* domainRevertToSnapshot */
     remoteDomainSnapshotDelete, /* domainSnapshotDelete */
     remoteQemuDomainMonitorCommand, /* qemuDomainMonitorCommand */
-    remoteDomainSetMemoryParameters, /* domainSetMemoryParameters */
-    remoteDomainGetMemoryParameters, /* domainGetMemoryParameters */
     remoteDomainOpenConsole, /* domainOpenConsole */
 };
 
index 438f5a3cb6373a11ca732053e6df9e66225b47a0..5f2aed6bc7e61ca2b205e7d890daecc94247a550 100644 (file)
@@ -5366,6 +5366,10 @@ static virDriver testDriver = {
     testSetMaxMemory, /* domainSetMaxMemory */
     testSetMemory, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     testGetDomainInfo, /* domainGetInfo */
     testDomainSave, /* domainSave */
     testDomainRestore, /* domainRestore */
@@ -5441,8 +5445,6 @@ static virDriver testDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParameters */
-    NULL, /* domainGetMemoryParameters */
     NULL, /* domainOpenConsole */
 };
 
index 671fcc5c86ed2ea950da37d9b1deb501c90e3729..538d5f732cc3548c020375b87fd0efd0a918dc8a 100644 (file)
@@ -2168,6 +2168,10 @@ static virDriver umlDriver = {
     umlDomainSetMaxMemory, /* domainSetMaxMemory */
     umlDomainSetMemory, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     umlDomainGetInfo, /* domainGetInfo */
     NULL, /* domainSave */
     NULL, /* domainRestore */
@@ -2243,8 +2247,6 @@ static virDriver umlDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParamters */
-    NULL, /* domainGetMemoryParamters */
     umlDomainOpenConsole, /* domainOpenConsole */
 };
 
index 342ab5ec97fe4f2bcc91668104d37b65f6244a5a..e8ac48fc66993825ca1060e3e81d85b26e571704 100644 (file)
@@ -8556,6 +8556,10 @@ virDriver NAME(Driver) = {
     NULL, /* domainSetMaxMemory */
     vboxDomainSetMemory, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     vboxDomainGetInfo, /* domainGetInfo */
     vboxDomainSave, /* domainSave */
     NULL, /* domainRestore */
@@ -8641,8 +8645,6 @@ virDriver NAME(Driver) = {
     vboxDomainRevertToSnapshot, /* domainRevertToSnapshot */
     vboxDomainSnapshotDelete, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParameters */
-    NULL, /* domainGetMemoryParameters */
     NULL, /* domainOpenConsole */
 };
 
index 064b4cbd0541753cfc93ba95e26d27893c9dad2c..b9f523f89b40a64a5bce3ed6c04d75cb95dcf5f9 100644 (file)
@@ -926,6 +926,10 @@ static virDriver vmwareDriver = {
     NULL,                       /* domainSetMaxMemory */
     NULL,                       /* domainSetMemory */
     NULL,                       /* domainSetMemoryFlags */
+    NULL,                       /* domainSetMemoryParameters */
+    NULL,                       /* domainGetMemoryParameters */
+    NULL,                       /* domainSetBlkioParameters */
+    NULL,                       /* domainGetBlkioParameters */
     vmwareDomainGetInfo,        /* domainGetInfo */
     NULL,                       /* domainSave */
     NULL,                       /* domainRestore */
@@ -1001,8 +1005,6 @@ static virDriver vmwareDriver = {
     NULL,                       /* domainRevertToSnapshot */
     NULL,                       /* domainSnapshotDelete */
     NULL,                       /* qemuDomainMonitorCommand */
-    NULL,                       /* domainSetMemoryParameters */
-    NULL,                       /* domainGetMemoryParameters */
     NULL,                       /* domainOpenConsole */
 };
 
index a777225204429f92a17c06be166f3b429b1ab23e..7d08df329673c1f93e4e047f732ac40cd240ed04 100644 (file)
@@ -2035,6 +2035,10 @@ static virDriver xenUnifiedDriver = {
     xenUnifiedDomainSetMaxMemory, /* domainSetMaxMemory */
     xenUnifiedDomainSetMemory, /* domainSetMemory */
     NULL, /*domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     xenUnifiedDomainGetInfo, /* domainGetInfo */
     xenUnifiedDomainSave, /* domainSave */
     xenUnifiedDomainRestore, /* domainRestore */
@@ -2110,8 +2114,6 @@ static virDriver xenUnifiedDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParameters */
-    NULL, /* domainGetMemoryParameters */
     xenUnifiedDomainOpenConsole, /* domainOpenConsole */
 };
 
index 91c91cd73eb062ec91062bffe9bb9c01a268a34d..e2d4dd364a6cde847a810424ce0968af3eb713cf 100644 (file)
@@ -1804,6 +1804,10 @@ static virDriver xenapiDriver = {
     xenapiDomainSetMaxMemory, /* domainSetMaxMemory */
     NULL, /* domainSetMemory */
     NULL, /* domainSetMemoryFlags */
+    NULL, /* domainSetMemoryParameters */
+    NULL, /* domainGetMemoryParameters */
+    NULL, /* domainSetBlkioParameters */
+    NULL, /* domainGetBlkioParameters */
     xenapiDomainGetInfo, /* domainGetInfo */
     NULL, /* domainSave */
     NULL, /* domainRestore */
@@ -1879,8 +1883,6 @@ static virDriver xenapiDriver = {
     NULL, /* domainRevertToSnapshot */
     NULL, /* domainSnapshotDelete */
     NULL, /* qemuDomainMonitorCommand */
-    NULL, /* domainSetMemoryParameters */
-    NULL, /* domainGetMemoryParameters */
     NULL, /* domainOpenConsole */
 };