diff --git a/scripts/raid-size-tests.py b/scripts/raid-size-tests.py index 882bc7af..28e237c9 100644 --- a/scripts/raid-size-tests.py +++ b/scripts/raid-size-tests.py @@ -119,7 +119,7 @@ def verify_size_ok(level, sizes): print("exactly right!") r = True else: - print("underestimated size by", real_size - calc_size) + print("subiquity wasted space", real_size - calc_size) r = True finally: cleanup() diff --git a/subiquity/models/filesystem.py b/subiquity/models/filesystem.py index bf6a7f74..82bb4291 100644 --- a/subiquity/models/filesystem.py +++ b/subiquity/models/filesystem.py @@ -235,8 +235,10 @@ DEFAULT_CHUNK = 512 # devices vary, which is not normal but also not something we prevent). # # All this is tested against reality in ./scripts/get-raid-sizes.py -def calculate_data_offset(devsize): - devsize >>= 9 # convert to sectors +def calculate_data_offset_bytes(devsize): + # Convert to sectors to make it easier to compare this code to mdadm's (we + # convert back at the end) + devsize >>= 9 devsize = align_down(devsize, DEFAULT_CHUNK) @@ -260,9 +262,8 @@ def calculate_data_offset(devsize): "get_raid_size: adjusting for %s sectors of overhead", data_offset) data_offset = align_up(data_offset, 2*1024) - data_offset <<= 9 # convert back to bytes - - return data_offset + # convert back to bytes + return data_offset << 9 def raid_device_sort(devices): @@ -277,7 +278,7 @@ def get_raid_size(level, devices): if len(devices) == 0: return 0 devices = raid_device_sort(devices) - data_offset = calculate_data_offset(devices[0].size) + data_offset = calculate_data_offset_bytes(devices[0].size) sizes = [align_down(dev.size - data_offset) for dev in devices] min_size = min(sizes) if min_size <= 0: