Refactor umount() (#2516)

This commit is contained in:
codefiles 2024-05-18 21:29:02 -04:00 committed by GitHub
parent 63cfee434e
commit cee32670f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 10 additions and 17 deletions

View File

@ -695,28 +695,21 @@ class DeviceHandler(object):
raise DiskError(f'Could not mount {dev_path}: {command}\n{err.message}')
def umount(self, mountpoint: Path, recursive: bool = False):
try:
lsblk_info = get_lsblk_info(mountpoint)
except SysCallError as ex:
# this could happen if before partitioning the device contained 3 partitions
# and after partitioning only 2 partitions were created, then the modifications object
# will have a reference to /dev/sX3 which is being tried to umount here now
if 'not a block device' in ex.message:
return
raise ex
lsblk_info = get_lsblk_info(mountpoint)
if len(lsblk_info.mountpoints) > 0:
debug(f'Partition {mountpoint} is currently mounted at: {[str(m) for m in lsblk_info.mountpoints]}')
if not lsblk_info.mountpoints:
return
for mountpoint in lsblk_info.mountpoints:
debug(f'Unmounting mountpoint: {mountpoint}')
debug(f'Partition {mountpoint} is currently mounted at: {[str(m) for m in lsblk_info.mountpoints]}')
command = 'umount'
cmd = ['umount']
if recursive:
command += ' -R'
if recursive:
cmd.append('-R')
SysCommand(f'{command} {mountpoint}')
for path in lsblk_info.mountpoints:
debug(f'Unmounting mountpoint: {path}')
SysCommand(cmd + [str(path)])
def detect_pre_mounted_mods(self, base_mountpoint: Path) -> List[DeviceModification]:
part_mods: Dict[Path, List[PartitionModification]] = {}