提交 46bad512 编写于 作者: D Daniel P. Berrange

Internal driver API infrastructure for virDomainGetBlockInfo

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
上级 24aad9f7
......@@ -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;
......
......@@ -3776,6 +3776,7 @@ static virDriver esxDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */
esxNodeGetFreeMemory, /* nodeGetFreeMemory */
NULL, /* domainEventRegister */
......
......@@ -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 *
......
......@@ -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 ....
......@@ -2517,6 +2517,7 @@ static virDriver lxcDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */
lxcDomainEventRegister, /* domainEventRegister */
......
......@@ -771,6 +771,7 @@ static virDriver oneDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */
NULL, /* domainEventRegister */
......
......@@ -1525,6 +1525,7 @@ static virDriver openvzDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */
NULL, /* domainEventRegister */
......
......@@ -1630,6 +1630,7 @@ virDriver phypDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */
NULL, /* domainEventRegister */
......
......@@ -11467,6 +11467,7 @@ static virDriver qemuDriver = {
qemudDomainMemoryStats, /* domainMemoryStats */
qemudDomainBlockPeek, /* domainBlockPeek */
qemudDomainMemoryPeek, /* domainMemoryPeek */
NULL, /* domainBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */
qemuDomainEventRegister, /* domainEventRegister */
......
......@@ -10144,6 +10144,7 @@ static virDriver remote_driver = {
remoteDomainMemoryStats, /* domainMemoryStats */
remoteDomainBlockPeek, /* domainBlockPeek */
remoteDomainMemoryPeek, /* domainMemoryPeek */
NULL, /* domainBlockInfo */
remoteNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
remoteNodeGetFreeMemory, /* getFreeMemory */
remoteDomainEventRegister, /* domainEventRegister */
......
......@@ -5280,6 +5280,7 @@ static virDriver testDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
testNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */
testDomainEventRegister, /* domainEventRegister */
......
......@@ -1911,6 +1911,7 @@ static virDriver umlDriver = {
NULL, /* domainMemoryStats */
umlDomainBlockPeek, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */
NULL, /* domainEventRegister */
......
......@@ -8164,6 +8164,7 @@ virDriver NAME(Driver) = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */
#if VBOX_API_VERSION == 2002
......
......@@ -1961,6 +1961,7 @@ static virDriver xenUnifiedDriver = {
NULL, /* domainMemoryStats */
xenUnifiedDomainBlockPeek, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
xenUnifiedNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
xenUnifiedNodeGetFreeMemory, /* getFreeMemory */
xenUnifiedDomainEventRegister, /* domainEventRegister */
......
......@@ -1762,6 +1762,7 @@ static virDriver xenapiDriver = {
NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
xenapiNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
xenapiNodeGetFreeMemory, /* getFreeMemory */
NULL, /* domainEventRegister */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册