mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Add virDomainGetBlockInfo API to query disk sizing
Some applications need to be able to query a guest's disk info, even for paths not managed by the storage pool APIs. This adds a very simple API to get this information, modelled on the virStorageVolGetInfo API, but with an extra field 'physical'. Normally 'physical' and 'allocation' will be identical, but in the case of a qcow2-like file stored inside a block device 'physical' will give the block device size, while 'allocation' will give the qcow2 image size * include/libvirt/libvirt.h.in: Define virDomainGetBlockInfo
This commit is contained in:
parent
270895063d
commit
24aad9f7be
@ -733,6 +733,42 @@ int virDomainBlockPeek (virDomainPtr dom,
|
|||||||
void *buffer,
|
void *buffer,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
|
|
||||||
|
/** virDomainBlockInfo:
|
||||||
|
*
|
||||||
|
* This struct provides information about the size of a block device backing store
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
*
|
||||||
|
* - Fully allocated raw file in filesystem:
|
||||||
|
* * capacity, allocation, physical: All the same
|
||||||
|
*
|
||||||
|
* - Sparse raw file in filesystem:
|
||||||
|
* * capacity: logical size of the file
|
||||||
|
* * allocation, physical: number of blocks allocated to file
|
||||||
|
*
|
||||||
|
* - qcow2 file in filesystem
|
||||||
|
* * capacity: logical size from qcow2 header
|
||||||
|
* * allocation, physical: logical size of the file / highest qcow extent (identical)
|
||||||
|
*
|
||||||
|
* - qcow2 file in a block device
|
||||||
|
* * capacity: logical size from qcow2 header
|
||||||
|
* * allocation: highest qcow extent written
|
||||||
|
* * physical: size of the block device container
|
||||||
|
*/
|
||||||
|
typedef struct _virDomainBlockInfo virDomainBlockInfo;
|
||||||
|
typedef virDomainBlockInfo *virDomainBlockInfoPtr;
|
||||||
|
struct _virDomainBlockInfo {
|
||||||
|
unsigned long long capacity; /* logical size in bytes of the block device backing image */
|
||||||
|
unsigned long long allocation; /* highest allocated extent in bytes of the block device backing image */
|
||||||
|
unsigned long long physical; /* physical size in bytes of the container of the backing image */
|
||||||
|
};
|
||||||
|
|
||||||
|
int virDomainGetBlockInfo(virDomainPtr dom,
|
||||||
|
const char *path,
|
||||||
|
virDomainBlockInfoPtr info,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
/* Memory peeking flags. */
|
/* Memory peeking flags. */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_MEMORY_VIRTUAL = 1, /* addresses are virtual addresses */
|
VIR_MEMORY_VIRTUAL = 1, /* addresses are virtual addresses */
|
||||||
|
Loading…
Reference in New Issue
Block a user