void *buffer,
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. */
typedef enum {
VIR_MEMORY_VIRTUAL = 1, /* addresses are virtual addresses */