Nir Soffer has uploaded a new change for review.
Change subject: hsm: Return true "truesize" for block volumes
......................................................................
hsm: Return true "truesize" for block volumes
HSM.getVolumeSize() and HSM.getVolumeInfo() used to return bogus value
for "truesize" for block volumes. This evil undocumented lie was
introduced in commit commit 1cef1409b1 (BZ#551944 - VDSM: getVolumeInfo:
Actual size field is not correct for RAW sparse files) on 2010.
Now we obtain block volumes "truesize" using qemu-img info.
Change-Id: Ib1e726727ef96f26a5d04ef86c87cb18d1ef658f
Signed-off-by: Nir Soffer <nsoffer(a)redhat.com>
---
M vdsm/storage/blockSD.py
M vdsm/storage/blockVolume.py
2 files changed, 11 insertions(+), 2 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/85/37785/1
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index caaef6b..ebde78c 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -617,7 +617,9 @@
return int(size)
- getVAllocSize = getVSize
+ def getVAllocSize(self, imgUUID, volUUID):
+ """ Returns block volume true size in bytes. """
+ return self.produceVolume(imgUUID, volUUID).getVolumeTrueSize(bs=1)
def validateCreateVolumeParams(self, volFormat, srcVolUUID,
preallocate=None):
diff --git a/vdsm/storage/blockVolume.py b/vdsm/storage/blockVolume.py
index 2bb9a78..99c8840 100644
--- a/vdsm/storage/blockVolume.py
+++ b/vdsm/storage/blockVolume.py
@@ -643,7 +643,14 @@
sdobj = sdCache.produce(sdUUID=self.sdUUID)
return int(sdobj.getVSize(self.imgUUID, self.volUUID) / bs)
- getVolumeTrueSize = getVolumeSize
+ def getVolumeTrueSize(self, bs=BLOCK_SIZE):
+ """
+ Return the volume true size in blocks
+
+ Raises qemuimg.QImgError if volume size cannot be obtained.
+ """
+ info = qemuimg.info(self.getVolumePath())
+ return int(info["virtualsize"] / bs)
def _extendSizeRaw(self, newSize):
# Since this method relies on lvm.extendLV (lvextend) when the
--
To view, visit
http://gerrit.ovirt.org/37785
To unsubscribe, visit
http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib1e726727ef96f26a5d04ef86c87cb18d1ef658f
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Nir Soffer <nsoffer(a)redhat.com>