Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-03-29 16:51:30 +0200
committerAnton Hvornum <anton@hvornum.se>2021-03-29 16:51:30 +0200
commit5e9c973d42125bb809443670c1e30439e4b11b17 (patch)
treeaba9e21caabe30d33c29703deaf35c312d50e70e /archinstall
parentd26c1f820ddef17bfd9d1a536fbc8a068e815ff6 (diff)
Added support for flushing a BlockDevice() cache after a partition has been formatted. This is to avoid internal confusion of which partitions are encrypted or not when going from Encrypted -> Un-encrypted setups.
Diffstat (limited to 'archinstall')
-rw-r--r--archinstall/lib/disk.py11
-rw-r--r--archinstall/lib/luks.py2
2 files changed, 10 insertions, 3 deletions
diff --git a/archinstall/lib/disk.py b/archinstall/lib/disk.py
index 0e42feca..518c1503 100644
--- a/archinstall/lib/disk.py
+++ b/archinstall/lib/disk.py
@@ -107,7 +107,7 @@ class BlockDevice():
if part_id not in self.part_cache:
## TODO: Force over-write even if in cache?
if part_id not in self.part_cache or self.part_cache[part_id].size != part['size']:
- self.part_cache[part_id] = Partition(root_path + part_id, part_id=part_id, size=part['size'])
+ self.part_cache[part_id] = Partition(root_path + part_id, self, part_id=part_id, size=part['size'])
return {k: self.part_cache[k] for k in sorted(self.part_cache)}
@@ -133,9 +133,11 @@ class BlockDevice():
self.part_cache = OrderedDict()
class Partition():
- def __init__(self, path, part_id=None, size=-1, filesystem=None, mountpoint=None, encrypted=False, autodetect_filesystem=True):
+ def __init__(self, path :str, block_device :BlockDevice, part_id=None, size=-1, filesystem=None, mountpoint=None, encrypted=False, autodetect_filesystem=True):
if not part_id:
part_id = os.path.basename(path)
+
+ self.block_device = block_device
self.path = path
self.part_id = part_id
self.mountpoint = mountpoint
@@ -192,6 +194,7 @@ class Partition():
if value:
log(f'Marking {self} as encrypted: {value}', level=LOG_LEVELS.Debug)
log(f"Callstrack when marking the partition: {''.join(traceback.format_stack())}", level=LOG_LEVELS.Debug)
+
self._encrypted = value
@property
@@ -318,6 +321,10 @@ class Partition():
else:
raise UnknownFilesystemFormat(f"Fileformat '{filesystem}' is not yet implemented.")
+
+ if self.block_device:
+ self.block_device.flush_cache()
+
return True
def find_parent_of(self, data, name, parent=None):
diff --git a/archinstall/lib/luks.py b/archinstall/lib/luks.py
index 30c38ec8..19c21795 100644
--- a/archinstall/lib/luks.py
+++ b/archinstall/lib/luks.py
@@ -113,7 +113,7 @@ class luks2():
sys_command(f'/usr/bin/cryptsetup open {partition.path} {mountpoint} --key-file {os.path.abspath(key_file)} --type luks2')
if os.path.islink(f'/dev/mapper/{mountpoint}'):
self.mapdev = f'/dev/mapper/{mountpoint}'
- unlocked_partition = Partition(self.mapdev, encrypted=True, filesystem=get_filesystem_type(self.mapdev), autodetect_filesystem=False)
+ unlocked_partition = Partition(self.mapdev, None, encrypted=True, filesystem=get_filesystem_type(self.mapdev), autodetect_filesystem=False)
unlocked_partition.allow_formatting = self.partition.allow_formatting
return unlocked_partition