From 4418815bb45a518f683a9b12869412510b3e1b0c Mon Sep 17 00:00:00 2001 From: David Lehman Date: Thu, 2 Apr 2009 18:59:22 -0500 Subject: Round up when aligning to pesize for space used. (#493656) --- storage/devices.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/storage/devices.py b/storage/devices.py index 082725e0d..f75463f91 100644 --- a/storage/devices.py +++ b/storage/devices.py @@ -1788,7 +1788,7 @@ class LVMVolumeGroupDevice(DMDevice): log.debug("%s size is %dMB" % (self.name, size)) for lv in self.lvs: log.debug("lv %s (%s) uses %dMB" % (lv.name, lv, lv.size)) - used += self.align(lv.size) + used += self.align(lv.size, roundup=True) free = self.size - used log.debug("vg %s has %dMB free" % (self.name, free)) @@ -1800,14 +1800,19 @@ class LVMVolumeGroupDevice(DMDevice): # TODO: just ask lvm if isModified returns False return self.freeSpace / self.peSize - def align(self, size): + def align(self, size, roundup=None): """ Align a size to a multiple of physical extent size. """ size = numeric_type(size) + if roundup: + round = math.ceil + else: + round = math.floor + # we want Kbytes as a float for our math size *= 1024.0 pesize = self.peSize * 1024.0 - return long((math.floor(size / pesize) * pesize) / 1024) + return long((round(size / pesize) * pesize) / 1024) @property def pvs(self): -- cgit