Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/disk/btrfs.py
diff options
context:
space:
mode:
Diffstat (limited to 'archinstall/lib/disk/btrfs.py')
-rw-r--r--archinstall/lib/disk/btrfs.py36
1 files changed, 34 insertions, 2 deletions
diff --git a/archinstall/lib/disk/btrfs.py b/archinstall/lib/disk/btrfs.py
index d6758b3f..558a249e 100644
--- a/archinstall/lib/disk/btrfs.py
+++ b/archinstall/lib/disk/btrfs.py
@@ -1,4 +1,36 @@
+import pathlib, glob
+from typing import Union
+from .helpers import get_mount_info
+from ..exceptions import DiskError
from ..general import SysCommand
-def create_subvolume(installation):
- SysCommand(f"btrfs subvolume create {installation.target}/@") \ No newline at end of file
+def mount_subvolume(installation, location :Union[pathlib.Path, str], force=False) -> bool:
+ """
+ This function uses mount to mount a subvolume on a given device, at a given location with a given subvolume name.
+
+ @installation: archinstall.Installer instance
+ @location: a localized string or path inside the installation / or /boot for instance without specifying /mnt/boot
+ @force: overrides the check for weither or not the subvolume mountpoint is empty or not
+ """
+ # Set up the required physical structure
+ if type(location) == str:
+ location = pathlib.Path(location)
+
+ if not location.exists():
+ location.mkdir(parents=True)
+
+ if glob.glob(str(installation.target/location/'*')) and force is False:
+ raise DiskError(f"Cannot mount subvolume to {installation.target/location} because it contains data (non-empty folder target)")
+
+ # Mount the logical volume to the physical structure
+ return SysCommand(f"mount {get_mount_info(installation.target/location)['source']} {installation.target}/{str(location)} -o subvol=@/{str(location)}").exit_code == 0
+
+def create_subvolume(installation, location :Union[pathlib.Path, str]) -> bool:
+ """
+ This function uses btrfs to create a subvolume.
+
+ @installation: archinstall.Installer instance
+ @location: a localized string or path inside the installation / or /boot for instance without specifying /mnt/boot
+ """
+
+ SysCommand(f"btrfs subvolume create {installation.target}/{str(location)}") \ No newline at end of file