Although the virStorageBackendUpdateVolTargetInfo will update the
target.physical value, there is no way to provide that information
via the virStorageGetVolInfo API since it only returns the capacity
and allocation of a volume. So as described in commit id '0282ca45',
it should be possible to generate an output only <physical> value
for that purpose.
This patch generates the <physical> value in the volume XML output
for the sole purpose of being able to view/see the value to allow
someone to parse the XML in order to obtain the value.
Update the documentation to describe the output only nature.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
docs/formatstorage.html.in | 5 +++++
src/conf/storage_conf.c | 6 ++++++
2 files changed, 11 insertions(+)
diff --git a/docs/formatstorage.html.in b/docs/formatstorage.html.in
index 47c8b0c..a7273ed 100644
--- a/docs/formatstorage.html.in
+++ b/docs/formatstorage.html.in
@@ -550,6 +550,11 @@
specified with the same semantics as for <code>allocation</code>
This is compulsory when creating a volume.
<span class="since">Since 0.4.1</span></dd>
+ <dt><code>physical</code></dt>
+ <dd>This output only element provides the host physical size of
+ the target storage volume. The default output <code>unit</code>
+ will be in bytes.
+ <span class="since">Since 3.0.0</span></dd>
<dt><code>source</code></dt>
<dd>Provides information about the underlying storage allocation
of the volume. This may not be available for some pool types.
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 7e7bb72..71ea0c9 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -1669,6 +1669,12 @@ virStorageVolDefFormat(virStoragePoolDefPtr pool,
def->target.capacity);
virBufferAsprintf(&buf, "<allocation
unit='bytes'>%llu</allocation>\n",
def->target.allocation);
+ /* NB: Display only - since virStorageVolInfo is limited to just
+ * 'capacity' and 'allocation' on output. Since we don't read
this
+ * in, be sure it was filled in before printing */
+ if (def->target.physical)
+ virBufferAsprintf(&buf, "<physical
unit='bytes'>%llu</physical>\n",
+ def->target.physical);
if (virStorageVolTargetDefFormat(options, &buf,
&def->target, "target") < 0)
--
2.7.4