From 1aa738691e261b3dfaf5195ec7636617a283d47a Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Tue, 25 Jan 2022 16:09:34 +0100 Subject: Fixing the 'device_instance' being None in some partition places (#902) * Added a new return value from add_partition. Also added an exception to make sure `add_partition` can't continue silently * Added a log of debugging to add_partition * Removed a blank line (flake8) * Misconfigured variable * Added some more debugging information to partprobe * FIX: disk layout: partprobe should be called and checked only for target device (#896) * disk layout: partprobe should be called and checked only for target device * disk layout: partprobe: removed unnecessary bash subprocess * Properly defined BlockDevice() on Partition() creation. Also made sure mount-checks got some rrro handling and non-block devices should no longer attempt to return a size Co-authored-by: Anton Hvornum Co-authored-by: Victor Gavro --- archinstall/lib/disk/partition.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'archinstall/lib/disk/partition.py') diff --git a/archinstall/lib/disk/partition.py b/archinstall/lib/disk/partition.py index b3db143a..afd34f20 100644 --- a/archinstall/lib/disk/partition.py +++ b/archinstall/lib/disk/partition.py @@ -46,11 +46,12 @@ class Partition: except DiskError: mount_information = {} - if self.mountpoint != mount_information.get('target', None) and mountpoint: - raise DiskError(f"{self} was given a mountpoint but the actual mountpoint differs: {mount_information.get('target', None)}") + if mount_information.get('target', None): + if self.mountpoint != mount_information.get('target', None) and mountpoint: + raise DiskError(f"{self} was given a mountpoint but the actual mountpoint differs: {mount_information.get('target', None)}") - if target := mount_information.get('target', None): - self.mountpoint = target + if target := mount_information.get('target', None): + self.mountpoint = target if not self.filesystem and autodetect_filesystem: if fstype := mount_information.get('fstype', get_filesystem_type(path)): @@ -130,6 +131,9 @@ class Partition: for device in lsblk['blockdevices']: return convert_size_to_gb(device['size']) + elif handle.exit_code == 8192: + # Device is not a block device + return None time.sleep(storage['DISK_TIMEOUTS']) @@ -225,7 +229,7 @@ class Partition: return bind_name def partprobe(self) -> bool: - if SysCommand(f'partprobe {self.block_device.device}').exit_code == 0: + if self.block_device and SysCommand(f'partprobe {self.block_device.device}').exit_code == 0: time.sleep(1) return True return False -- cgit v1.2.3-54-g00ecf