On Wed, Apr 28, 2010 at 01:54:45PM +0100, Daniel P. Berrange wrote:
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
[....]
+
+/** 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
+ */
Argh, forgot that in my previous review, we need to explicitely tell
the size units, I expect bytes but we're unsing kB in some places
so...
+typedef struct _virDomainBlockInfo virDomainBlockInfo;
+typedef virDomainBlockInfo *virDomainBlockInfoPtr;
+struct _virDomainBlockInfo {
+ unsigned long long capacity; /* logical size of the block device backing image */
+ unsigned long long allocation; /* allocated extent of the block device backing image
*/
+ unsigned long long physical; /* physical size of the container of the backing
image */
+};
s/size/size in bytes/g
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/