Added some error handling to mount points not getting mounted properly.
This commit is contained in:
parent
6be071b6e0
commit
c4f688ce4c
|
|
@ -25,7 +25,7 @@ def mount_subvolume(installation, location :Union[pathlib.Path, str], force=Fals
|
|||
raise DiskError(f"Cannot mount subvolume to {installation.target/location} because it contains data (non-empty folder target)")
|
||||
|
||||
log(f"Mounting {location} as a subvolume", level=logging.INFO)
|
||||
print(get_mount_info(installation.target/location))
|
||||
print(get_mount_info(installation.target/location, traverse=True))
|
||||
# Mount the logical volume to the physical structure
|
||||
mount_location = get_mount_info(installation.target/location)['source']
|
||||
SysCommand(f"umount {mount_location}")
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ def harddrive(size=None, model=None, fuzzy=False):
|
|||
return collection[drive]
|
||||
|
||||
|
||||
def get_mount_info(path :Union[pathlib.Path, str]) -> dict:
|
||||
def get_mount_info(path :Union[pathlib.Path, str], traverse=False) -> dict:
|
||||
for traversal in list(map(str, [str(path)] + list(pathlib.Path(str(path)).parents))):
|
||||
try:
|
||||
output = SysCommand(f'/usr/bin/findmnt --json {traversal}').decode('UTF-8')
|
||||
|
|
@ -125,6 +125,9 @@ def get_mount_info(path :Union[pathlib.Path, str]) -> dict:
|
|||
except SysCallError:
|
||||
pass
|
||||
|
||||
if not traverse:
|
||||
break
|
||||
|
||||
if not output:
|
||||
return {}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,14 @@
|
|||
import time
|
||||
from .disk import *
|
||||
from .hardware import *
|
||||
from .locale_helpers import verify_keyboard_layout, verify_x11_keyboard_layout
|
||||
from .helpers import get_mount_info
|
||||
from .mirrors import *
|
||||
from .plugins import plugins
|
||||
from .storage import storage
|
||||
from .user_interaction import *
|
||||
from .disk.btrfs import create_subvolume, mount_subvolume
|
||||
from .exceptions import DiskError, ServiceException
|
||||
|
||||
# Any package that the Installer() is responsible for (optional and the default ones)
|
||||
__packages__ = ["base", "base-devel", "linux-firmware", "linux", "linux-lts", "linux-zen", "linux-hardened"]
|
||||
|
|
@ -144,6 +147,10 @@ class Installer:
|
|||
else:
|
||||
mountpoints[mountpoint]['device_instance'].mount(f"{self.target}{mountpoint}")
|
||||
|
||||
time.sleep(1)
|
||||
if not get_mount_info(f"{self.target}{mountpoint}", traverse=False):
|
||||
raise DiskError(f"Target {self.target}{mountpoint} never got mounted properly.")
|
||||
|
||||
if (subvolumes := mountpoints[mountpoint].get('btrfs', {}).get('subvolumes', {})):
|
||||
for name, location in subvolumes.items():
|
||||
create_subvolume(self, location)
|
||||
|
|
|
|||
Loading…
Reference in New Issue