mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-13 00:46:03 -06:00
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
This commit is contained in:
parent
24aad9f7be
commit
46bad5121f
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user