diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index ed73f2f0f..c2e221c37 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -183,39 +183,19 @@ class FstabGenerator(object): print(FSTAB_HEADER, file=fstab_file) for partition in self.partitions: - # Special treatment for a btrfs root with @, @home and @swap - # subvolumes + # Special treatment for a btrfs subvolumes if (partition["fs"] == "btrfs" and partition["mountPoint"] == "/"): - output = subprocess.check_output(['btrfs', - 'subvolume', - 'list', - self.root_mount_point]) - output_lines = output.splitlines() + # Subvolume list has been created in mount.conf and curated in mount module, + # so all subvolumes here should be safe to add to fstab btrfs_subvolumes = libcalamares.globalstorage.value("btrfsSubvolumes") - for line in output_lines: - # This is where changes need to go - if line.endswith(b'path @'): - root_entry = partition - root_entry["subvol"] = "@" - dct = self.generate_fstab_line_info(root_entry) - if dct: + for s in btrfs_subvolumes: + mount_entry = partition + mount_entry["mountPoint"] = s["mountPoint"] + home_entry["subvol"] = s["subvolume"] + dct = self.generate_fstab_line_info(mount_entry) + if dct: self.print_fstab_line(dct, file=fstab_file) - elif line.endswith(b'path @home'): - home_entry = partition - home_entry["mountPoint"] = "/home" - home_entry["subvol"] = "@home" - dct = self.generate_fstab_line_info(home_entry) - if dct: - self.print_fstab_line(dct, file=fstab_file) - elif line.endswith(b'path @swap'): - swap_part_entry = partition - swap_part_entry["mountPoint"] = "/swap" - swap_part_entry["subvol"] = "@swap" - dct = self.generate_fstab_line_info(swap_part_entry) - if dct: - self.print_fstab_line(dct, file=fstab_file) - else: dct = self.generate_fstab_line_info(partition) if dct: