DRBD: Remove cast to int in size calculation
In Python2.x, "int" is 32bit only, and so this overflows for 2TiB volumes. If we remove the casting to int before return, then it works for python 2 and 3. This is a resubmission of 395132 Change-Id: I3e4814ee066df5726b0a2b599961511c2516135b
This commit is contained in:
parent
85ca014ac8
commit
d19fb59014
|
@ -618,6 +618,18 @@ class DrbdManageIscsiTestCase(test.TestCase):
|
|||
self.assertEqual("set_drbdsetup_props", dmd.odm.next_call())
|
||||
self.assertEqual("run_external_plugin", dmd.odm.next_call())
|
||||
|
||||
def test_unit_conversions(self):
|
||||
dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration)
|
||||
|
||||
self.assertEqual(1048576, dmd._vol_size_to_dm(1))
|
||||
self.assertEqual(1, dmd._vol_size_to_cinder(1048576))
|
||||
|
||||
self.assertEqual(5368709120, dmd._vol_size_to_dm(5120))
|
||||
self.assertEqual(5120, dmd._vol_size_to_cinder(5368709120))
|
||||
|
||||
self.assertEqual(10737418240, dmd._vol_size_to_dm(10240))
|
||||
self.assertEqual(10240, dmd._vol_size_to_cinder(10737418240))
|
||||
|
||||
|
||||
class DrbdManageDrbdTestCase(DrbdManageIscsiTestCase):
|
||||
|
||||
|
|
|
@ -278,10 +278,10 @@ class DrbdManageBaseDriver(driver.VolumeDriver):
|
|||
|
||||
# DRBDmanage works in kiB units; Cinder uses GiB.
|
||||
def _vol_size_to_dm(self, size):
|
||||
return int(size * units.Gi / units.Ki)
|
||||
return size * units.Gi / units.Ki
|
||||
|
||||
def _vol_size_to_cinder(self, size):
|
||||
return int(size * units.Ki / units.Gi)
|
||||
return size * units.Ki / units.Gi
|
||||
|
||||
def is_clean_volume_name(self, name, prefix):
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue