From 522ca2e41c566b73b9dde291252b047842c718a1 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sat, 30 Oct 2021 17:55:16 +0200 Subject: Adding error handling for paths and btrfs subvolume creation. --- archinstall/lib/disk/btrfs.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'archinstall/lib/disk') diff --git a/archinstall/lib/disk/btrfs.py b/archinstall/lib/disk/btrfs.py index ff0b7b58..6fafab34 100644 --- a/archinstall/lib/disk/btrfs.py +++ b/archinstall/lib/disk/btrfs.py @@ -56,8 +56,17 @@ def create_subvolume(installation, subvolume_location :Union[pathlib.Path, str]) target = installation_mountpoint / subvolume_location.relative_to(subvolume_location.anchor) - if not target.exists(): - target.mkdir(parents=True) + # Difference from mount_subvolume: + # We only check if the parent exists, since we'll run in to "target path already exists" otherwise + if not target.parent.exists(): + target.parent.mkdir(parents=True) + + if glob.glob(str(target/'*')) and force is False: + raise DiskError(f"Cannot create subvolume at {target} because it contains data (non-empty folder target)") + + # Remove the target if it exists + if target.exists(): + target.rmdir() log(f"Creating a subvolume on {target}", level=logging.INFO) if (cmd := SysCommand(f"btrfs subvolume create {target}")).exit_code != 0: -- cgit v1.2.3-54-g00ecf