提交 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 ...@@ -261,6 +261,12 @@ typedef int
unsigned long long start, size_t size, unsigned long long start, size_t size,
void *buffer, void *buffer,
unsigned int flags); unsigned int flags);
typedef int
(*virDrvDomainGetBlockInfo)
(virDomainPtr domain,
const char *path,
virDomainBlockInfoPtr info,
unsigned int flags);
typedef int typedef int
(*virDrvDomainMigratePrepare) (*virDrvDomainMigratePrepare)
...@@ -525,6 +531,7 @@ struct _virDriver { ...@@ -525,6 +531,7 @@ struct _virDriver {
virDrvDomainMemoryStats domainMemoryStats; virDrvDomainMemoryStats domainMemoryStats;
virDrvDomainBlockPeek domainBlockPeek; virDrvDomainBlockPeek domainBlockPeek;
virDrvDomainMemoryPeek domainMemoryPeek; virDrvDomainMemoryPeek domainMemoryPeek;
virDrvDomainGetBlockInfo domainGetBlockInfo;
virDrvNodeGetCellsFreeMemory nodeGetCellsFreeMemory; virDrvNodeGetCellsFreeMemory nodeGetCellsFreeMemory;
virDrvNodeGetFreeMemory getFreeMemory; virDrvNodeGetFreeMemory getFreeMemory;
virDrvDomainEventRegister domainEventRegister; virDrvDomainEventRegister domainEventRegister;
......
...@@ -3776,6 +3776,7 @@ static virDriver esxDriver = { ...@@ -3776,6 +3776,7 @@ static virDriver esxDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */ NULL, /* nodeGetCellsFreeMemory */
esxNodeGetFreeMemory, /* nodeGetFreeMemory */ esxNodeGetFreeMemory, /* nodeGetFreeMemory */
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
......
...@@ -4625,6 +4625,55 @@ error: ...@@ -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 * * Handling of defined but not running domains *
......
...@@ -394,4 +394,9 @@ LIBVIRT_0.8.0 { ...@@ -394,4 +394,9 @@ LIBVIRT_0.8.0 {
} LIBVIRT_0.7.7; } LIBVIRT_0.7.7;
LIBVIRT_0.8.1 {
global:
virDomainGetBlockInfo;
} LIBVIRT_0.8.0;
# .... define new API here using predicted next version number .... # .... define new API here using predicted next version number ....
...@@ -2517,6 +2517,7 @@ static virDriver lxcDriver = { ...@@ -2517,6 +2517,7 @@ static virDriver lxcDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */ nodeGetFreeMemory, /* getFreeMemory */
lxcDomainEventRegister, /* domainEventRegister */ lxcDomainEventRegister, /* domainEventRegister */
......
...@@ -771,6 +771,7 @@ static virDriver oneDriver = { ...@@ -771,6 +771,7 @@ static virDriver oneDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */ NULL, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */ NULL, /* getFreeMemory */
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
......
...@@ -1525,6 +1525,7 @@ static virDriver openvzDriver = { ...@@ -1525,6 +1525,7 @@ static virDriver openvzDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */ NULL, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */ NULL, /* getFreeMemory */
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
......
...@@ -1630,6 +1630,7 @@ virDriver phypDriver = { ...@@ -1630,6 +1630,7 @@ virDriver phypDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
NULL, /* nodeGetCellsFreeMemory */ NULL, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */ NULL, /* getFreeMemory */
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
......
...@@ -11467,6 +11467,7 @@ static virDriver qemuDriver = { ...@@ -11467,6 +11467,7 @@ static virDriver qemuDriver = {
qemudDomainMemoryStats, /* domainMemoryStats */ qemudDomainMemoryStats, /* domainMemoryStats */
qemudDomainBlockPeek, /* domainBlockPeek */ qemudDomainBlockPeek, /* domainBlockPeek */
qemudDomainMemoryPeek, /* domainMemoryPeek */ qemudDomainMemoryPeek, /* domainMemoryPeek */
NULL, /* domainBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */ nodeGetFreeMemory, /* getFreeMemory */
qemuDomainEventRegister, /* domainEventRegister */ qemuDomainEventRegister, /* domainEventRegister */
......
...@@ -10144,6 +10144,7 @@ static virDriver remote_driver = { ...@@ -10144,6 +10144,7 @@ static virDriver remote_driver = {
remoteDomainMemoryStats, /* domainMemoryStats */ remoteDomainMemoryStats, /* domainMemoryStats */
remoteDomainBlockPeek, /* domainBlockPeek */ remoteDomainBlockPeek, /* domainBlockPeek */
remoteDomainMemoryPeek, /* domainMemoryPeek */ remoteDomainMemoryPeek, /* domainMemoryPeek */
NULL, /* domainBlockInfo */
remoteNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ remoteNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
remoteNodeGetFreeMemory, /* getFreeMemory */ remoteNodeGetFreeMemory, /* getFreeMemory */
remoteDomainEventRegister, /* domainEventRegister */ remoteDomainEventRegister, /* domainEventRegister */
......
...@@ -5280,6 +5280,7 @@ static virDriver testDriver = { ...@@ -5280,6 +5280,7 @@ static virDriver testDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
testNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ testNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
NULL, /* getFreeMemory */ NULL, /* getFreeMemory */
testDomainEventRegister, /* domainEventRegister */ testDomainEventRegister, /* domainEventRegister */
......
...@@ -1911,6 +1911,7 @@ static virDriver umlDriver = { ...@@ -1911,6 +1911,7 @@ static virDriver umlDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
umlDomainBlockPeek, /* domainBlockPeek */ umlDomainBlockPeek, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */ nodeGetFreeMemory, /* getFreeMemory */
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
......
...@@ -8164,6 +8164,7 @@ virDriver NAME(Driver) = { ...@@ -8164,6 +8164,7 @@ virDriver NAME(Driver) = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */ nodeGetFreeMemory, /* getFreeMemory */
#if VBOX_API_VERSION == 2002 #if VBOX_API_VERSION == 2002
......
...@@ -1961,6 +1961,7 @@ static virDriver xenUnifiedDriver = { ...@@ -1961,6 +1961,7 @@ static virDriver xenUnifiedDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
xenUnifiedDomainBlockPeek, /* domainBlockPeek */ xenUnifiedDomainBlockPeek, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
xenUnifiedNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ xenUnifiedNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
xenUnifiedNodeGetFreeMemory, /* getFreeMemory */ xenUnifiedNodeGetFreeMemory, /* getFreeMemory */
xenUnifiedDomainEventRegister, /* domainEventRegister */ xenUnifiedDomainEventRegister, /* domainEventRegister */
......
...@@ -1762,6 +1762,7 @@ static virDriver xenapiDriver = { ...@@ -1762,6 +1762,7 @@ static virDriver xenapiDriver = {
NULL, /* domainMemoryStats */ NULL, /* domainMemoryStats */
NULL, /* domainBlockPeek */ NULL, /* domainBlockPeek */
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
NULL, /* domainGetBlockInfo */
xenapiNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ xenapiNodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
xenapiNodeGetFreeMemory, /* getFreeMemory */ xenapiNodeGetFreeMemory, /* getFreeMemory */
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册