Skip to content

Commit b9ab887

Browse files
committed
diskutil: Sort partitions before computing free space areas
Signed-off-by: Hector Martin <[email protected]>
1 parent f52203d commit b9ab887

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

src/diskutil.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,24 @@ def get_partitions(self, dskname):
100100
parts = []
101101
total_size = dsk["Size"]
102102
p = 0
103-
prev_name = dskname
104103
for dskpart in dsk["Partitions"]:
105-
part = self.get_partition_info(dskpart["DeviceIdentifier"])
104+
parts.append(self.get_partition_info(dskpart["DeviceIdentifier"]))
105+
parts.sort(key=lambda i: i.offset)
106+
107+
prev_name = dskname
108+
parts2 = []
109+
for part in parts:
106110
if (part.offset - p) > self.FREE_THRESHOLD:
107-
parts.append(Partition(name=prev_name, free=True, type=None,
111+
parts2.append(Partition(name=prev_name, free=True, type=None,
108112
offset=p, size=(part.offset - p)))
109-
parts.append(part)
113+
parts2.append(part)
110114
prev_name = part.name
111115
p = part.offset + part.size
112116

113117
if (total_size - p) > self.FREE_THRESHOLD:
114-
parts.append(Partition(name=prev_name, free=True, type=None,
115-
offset=p, size=(total_size - p)))
116-
117-
return parts
118+
parts2.append(Partition(name=prev_name, free=True, type=None,
119+
offset=p, size=(total_size - p)))
120+
return parts2
118121

119122
def refresh_part(self, part):
120123
self.get_apfs_list(part.container["ContainerReference"])

0 commit comments

Comments
 (0)