add "in_extended" awareness to gap_with_size
This commit is contained in:
parent
2abdfb5a48
commit
f338cfed64
|
@ -252,10 +252,11 @@ def largest_gap_size(device, in_extended=None):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def gap_with_size(device, size):
|
def gap_with_size(device, size, *, in_extended=None):
|
||||||
for pg in parts_and_gaps(device):
|
for pg in parts_and_gaps(device):
|
||||||
if isinstance(pg, Gap) and pg.size >= size and pg.is_usable:
|
if isinstance(pg, Gap) and pg.size >= size and pg.is_usable:
|
||||||
return pg
|
if in_extended is None or in_extended == pg.in_extended:
|
||||||
|
return pg
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -814,11 +814,11 @@ class TestGapWithSize(GapTestCase):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# 0----10---20---30---40---50---60---70---80---90---100
|
# 0----10---20---30---40---50---60---70---80---90---100
|
||||||
# ##### [ p1 ] #####
|
# ##### [ p1 ] #####
|
||||||
d = make_disk(size=100 * MiB)
|
d = make_disk(size=100)
|
||||||
make_partition(device=d, size=10 * MiB, offset=10 * MiB)
|
make_partition(device=d, size=10, offset=20)
|
||||||
[g1, p1, g2] = gaps.parts_and_gaps(d)
|
[g1, p1, g2] = gaps.parts_and_gaps(d)
|
||||||
self.assertEqual(g2, gaps.gap_with_size(d, 20 * MiB))
|
self.assertEqual(g2, gaps.gap_with_size(d, 20))
|
||||||
|
|
||||||
def test_unusable(self):
|
def test_unusable(self):
|
||||||
self.use_alignment_data(
|
self.use_alignment_data(
|
||||||
|
@ -831,7 +831,29 @@ class TestGapWithSize(GapTestCase):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# 0----10---20---30---40---50---60---70---80---90---100
|
# 0----10---20---30---40---50---60---70---80---90---100
|
||||||
# ##### [ p1 ] #####
|
# ##### [ p1 ] #####
|
||||||
d = make_disk(size=100 * MiB)
|
d = make_disk(size=100)
|
||||||
make_partition(device=d, size=10 * MiB, offset=10 * MiB)
|
make_partition(device=d, size=10, offset=2)
|
||||||
self.assertIs(None, gaps.gap_with_size(d, 10 * MiB))
|
self.assertIs(None, gaps.gap_with_size(d, 10))
|
||||||
|
|
||||||
|
def test_in_extended(self):
|
||||||
|
self.use_alignment_data(
|
||||||
|
PartitionAlignmentData(
|
||||||
|
part_align=10,
|
||||||
|
min_gap_size=1,
|
||||||
|
min_start_offset=10,
|
||||||
|
min_end_offset=10,
|
||||||
|
primary_part_limit=10,
|
||||||
|
ebr_space=2,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
# 0----10---20---30---40---50---60---70---80---90---100
|
||||||
|
# ##### g1 [ p1 (extended) ] g3 #####
|
||||||
|
# [ p5 ] g2
|
||||||
|
d = make_disk(size=100)
|
||||||
|
make_partition(device=d, size=50, offset=20, flag="extended")
|
||||||
|
make_partition(device=d, size=18, offset=22, flag="logical")
|
||||||
|
[g1, p1, p5, g2, g3] = gaps.parts_and_gaps(d)
|
||||||
|
self.assertEqual(g2, gaps.gap_with_size(d, 20))
|
||||||
|
self.assertEqual(g3, gaps.gap_with_size(d, 20, in_extended=False))
|
||||||
|
self.assertEqual(g2, gaps.gap_with_size(d, 10, in_extended=True))
|
||||||
|
|
Loading…
Reference in New Issue