From e4e30b31d41de9a150925a2c5574b1e6e25a8407 Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Wed, 27 Aug 2025 18:28:17 +1000 Subject: [PATCH] Disable btrfs snapshots when no subvolumes defined (#3736) --- archinstall/lib/disk/disk_menu.py | 2 +- archinstall/lib/models/device.py | 7 ++++--- archinstall/scripts/guided.py | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/archinstall/lib/disk/disk_menu.py b/archinstall/lib/disk/disk_menu.py index 35ad1503..cb4d0759 100644 --- a/archinstall/lib/disk/disk_menu.py +++ b/archinstall/lib/disk/disk_menu.py @@ -118,7 +118,7 @@ class DiskLayoutConfigurationMenu(AbstractSubMenu[DiskLayoutConfiguration]): disk_layout_conf: DiskLayoutConfiguration | None = self._menu_item_group.find_by_key('disk_config').value if disk_layout_conf: - return disk_layout_conf.is_default_btrfs() + return disk_layout_conf.has_default_btrfs_vols() return False diff --git a/archinstall/lib/models/device.py b/archinstall/lib/models/device.py index 35ef9b4a..7dc94039 100644 --- a/archinstall/lib/models/device.py +++ b/archinstall/lib/models/device.py @@ -193,19 +193,20 @@ class DiskLayoutConfiguration: if (enc_config := disk_config.get('disk_encryption', None)) is not None: config.disk_encryption = DiskEncryption.parse_arg(config, enc_config, enc_password) - if config.is_default_btrfs(): + if config.has_default_btrfs_vols(): if (btrfs_arg := disk_config.get('btrfs_options', None)) is not None: config.btrfs_options = BtrfsOptions.parse_arg(btrfs_arg) return config - def is_default_btrfs(self) -> bool: + def has_default_btrfs_vols(self) -> bool: if self.config_type == DiskLayoutType.Default: for mod in self.device_modifications: for part in mod.partitions: if part.is_create_or_modify(): if part.fs_type == FilesystemType.Btrfs: - return True + if len(part.btrfs_subvols) > 0: + return True return False diff --git a/archinstall/scripts/guided.py b/archinstall/scripts/guided.py index 5c84956f..c0a252b8 100644 --- a/archinstall/scripts/guided.py +++ b/archinstall/scripts/guided.py @@ -150,7 +150,7 @@ def perform_installation(mountpoint: Path) -> None: if servies := config.services: installation.enable_service(servies) - if disk_config.is_default_btrfs(): + if disk_config.has_default_btrfs_vols(): btrfs_options = disk_config.btrfs_options snapshot_config = btrfs_options.snapshot_config if btrfs_options else None snapshot_type = snapshot_config.snapshot_type if snapshot_config else None