diff --git a/src/driver.h b/src/driver.h index da792d0040..6a8332514a 100644 --- a/src/driver.h +++ b/src/driver.h @@ -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; }; diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 37e104e902..4f013e8028 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -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 */ }; diff --git a/src/libvirt.c b/src/libvirt.c index 1b3b884b21..caa109dd78 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -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 diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index cfbd8dfe29..c027bf73c5 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -426,6 +426,8 @@ LIBVIRT_0.8.8 { LIBVIRT_0.9.0 { global: + virDomainGetBlkioParameters; + virDomainSetBlkioParameters; virDomainSetMemoryFlags; virEventRegisterDefaultImpl; virEventRunDefaultImpl; diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 4ddeffd50e..f99c99b27e 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -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 */ }; diff --git a/src/opennebula/one_driver.c b/src/opennebula/one_driver.c index 163d008149..f3c71add0c 100644 --- a/src/opennebula/one_driver.c +++ b/src/opennebula/one_driver.c @@ -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 */ }; diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 7119bde620..0d64e1910e 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -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 */ }; diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c index 84323a7e0b..b06b3b3e1e 100644 --- a/src/phyp/phyp_driver.c +++ b/src/phyp/phyp_driver.c @@ -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 */ }; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 7921d98737..21180aafa6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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 */ }; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 796e06d79f..2c257e1476 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -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 */ }; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 438f5a3cb6..5f2aed6bc7 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -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 */ }; diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index 671fcc5c86..538d5f732c 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -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 */ }; diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index 342ab5ec97..e8ac48fc66 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -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 */ }; diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index 064b4cbd05..b9f523f89b 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -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 */ }; diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index a777225204..7d08df3296 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -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 */ }; diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 91c91cd73e..e2d4dd364a 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -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 */ };