4d1b5d
From 0c0fa70924336d66faaf1923ad21a3a447fe0601 Mon Sep 17 00:00:00 2001
cebaad
From: Michel Alexandre Salim <michel@michel-slm.name>
cebaad
Date: Tue, 16 Feb 2021 18:39:29 -0800
4c654f
Subject: [PATCH 20005/20007] [Storage] add btrfs_compression option
cebaad
cebaad
This is a new option to allow specifying the compression algorithm and
cebaad
level for Btrfs filesystems. If set, it will be passed to Blivet and
cebaad
applied when mounting Btrfs filesystems.
cebaad
cebaad
Default this to None, but set it to "zstd:1" for CentOS Stream Hyperscale.
cebaad
cebaad
(cherry picked from commit 15e06b6aa9876d55dedaa9c37f2f589361de8949)
cebaad
---
cebaad
 anaconda.spec.in                             |  3 ++-
cebaad
 data/anaconda.conf                           |  3 +++
cebaad
 data/product.d/centos-stream-hyperscale.conf |  1 +
cebaad
 pyanaconda/core/configuration/storage.py     | 11 +++++++++++
cebaad
 pyanaconda/modules/storage/initialization.py |  1 +
cebaad
 5 files changed, 18 insertions(+), 1 deletion(-)
cebaad
cebaad
diff --git a/anaconda.spec.in b/anaconda.spec.in
4d1b5d
index 86e576819..7e443c580 100644
cebaad
--- a/anaconda.spec.in
cebaad
+++ b/anaconda.spec.in
cebaad
@@ -35,6 +35,7 @@ Source0: %{name}-%{version}.tar.bz2
cebaad
 %define nmver 1.0
cebaad
 %define pykickstartver 3.16.11-1
cebaad
 %define pypartedver 2.5-2
4d1b5d
+%define pythonblivetver 1:3.4.0-1
cebaad
 %define rpmver 4.10.0
cebaad
 %define simplelinever 1.1-1
cebaad
 %define utillinuxver 2.15.1
cebaad
@@ -81,7 +82,7 @@ The anaconda package is a metapackage for the Anaconda installer.
cebaad
 Summary: Core of the Anaconda installer
cebaad
 Requires: python3-libs
cebaad
 Requires: python3-dnf >= %{dnfver}
4d1b5d
-Requires: python3-blivet >= 1:3.4.0-1
cebaad
+Requires: python3-blivet >= %{pythonblivetver}
cebaad
 Requires: python3-blockdev >= %{libblockdevver}
cebaad
 Requires: python3-meh >= %{mehver}
cebaad
 Requires: libreport-anaconda >= 2.0.21-1
cebaad
diff --git a/data/anaconda.conf b/data/anaconda.conf
cebaad
index 1508a7a8a..c84881091 100644
cebaad
--- a/data/anaconda.conf
cebaad
+++ b/data/anaconda.conf
cebaad
@@ -156,6 +156,9 @@ multipath_friendly_names = True
cebaad
 # Do you want to allow imperfect devices (for example, degraded mdraid array devices)?
cebaad
 allow_imperfect_devices = False
cebaad
 
cebaad
+# Btrfs compression algorithm and level. e.g. zstd:1
cebaad
+btrfs_compression =
cebaad
+
cebaad
 # Default file system type. Use whatever Blivet uses by default.
cebaad
 file_system_type =
cebaad
 
cebaad
diff --git a/data/product.d/centos-stream-hyperscale.conf b/data/product.d/centos-stream-hyperscale.conf
cebaad
index 88979adb5..226359344 100644
cebaad
--- a/data/product.d/centos-stream-hyperscale.conf
cebaad
+++ b/data/product.d/centos-stream-hyperscale.conf
cebaad
@@ -9,6 +9,7 @@ product_name = CentOS Stream
cebaad
 
cebaad
 [Storage]
cebaad
 default_scheme = BTRFS
cebaad
+btrfs_compression = zstd:1
cebaad
 
cebaad
 [Payload]
cebaad
 # RHEL removes btrfs-progs, but we want it back
cebaad
diff --git a/pyanaconda/core/configuration/storage.py b/pyanaconda/core/configuration/storage.py
cebaad
index 29f554ed5..4dcbadbba 100644
cebaad
--- a/pyanaconda/core/configuration/storage.py
cebaad
+++ b/pyanaconda/core/configuration/storage.py
cebaad
@@ -82,6 +82,17 @@ class StorageSection(Section):
cebaad
         """
cebaad
         return self._get_option("allow_imperfect_devices", bool)
cebaad
 
cebaad
+    @property
cebaad
+    def btrfs_compression(self):
cebaad
+        """BTRFS compression setting.
cebaad
+
cebaad
+        Specifies the compression algorithm and level used when
cebaad
+        mounting Btrfs partitions. Defaults to None.
cebaad
+
cebaad
+        For example: "zstd:1"
cebaad
+        """
cebaad
+        return self._get_option("btrfs_compression", str) or None
cebaad
+
cebaad
     @property
cebaad
     def file_system_type(self):
cebaad
         """Default file system type.
cebaad
diff --git a/pyanaconda/modules/storage/initialization.py b/pyanaconda/modules/storage/initialization.py
cebaad
index cb2488a31..6b2838ead 100644
cebaad
--- a/pyanaconda/modules/storage/initialization.py
cebaad
+++ b/pyanaconda/modules/storage/initialization.py
cebaad
@@ -52,6 +52,7 @@ def enable_installer_mode():
cebaad
     blivet_flags.ibft = conf.storage.ibft
cebaad
     blivet_flags.multipath_friendly_names = conf.storage.multipath_friendly_names
cebaad
     blivet_flags.allow_imperfect_devices = conf.storage.allow_imperfect_devices
cebaad
+    blivet_flags.btrfs_compression = conf.storage.btrfs_compression
cebaad
 
cebaad
     # Platform class setup depends on flags, re-initialize it.
cebaad
     platform.update_from_flags()
cebaad
-- 
4d1b5d
2.32.0
cebaad