* [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support
@ 2024-05-13 12:13 Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 1/6] fix #5250: install: config: add new `btrfs_opts` with `compress` config option Christoph Heiss
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
Pretty much as it says on the tin, this adds the `compress` mount option
for Btrfs much in the same way as the ZFS equivalent.
In regards to the discussion in #5250 - `compress` is used. For the
detailed why, see commit #2.
Christoph Heiss (6):
fix #5250: install: config: add new `btrfs_opts` with `compress`
config option
fix #5250: install: write btrfs `compress` option to fstab
fix #5250: proxinstall: expose new btrfs `compress` option
fix #5250: tui: expose new btrfs `compress` option
fix #5250: auto-installer: expose new btrfs `compress` option
auto-installer: add btrfs answer parsing tests
Proxmox/Install.pm | 11 ++++++-
Proxmox/Install/Config.pm | 15 +++++++++
proxinstall | 15 +++++++++
proxmox-auto-installer/src/answer.rs | 6 +++-
proxmox-auto-installer/src/utils.rs | 8 ++++-
.../tests/resources/parse_answer/btrfs.json | 24 ++++++++++++++
.../tests/resources/parse_answer/btrfs.toml | 17 ++++++++++
proxmox-installer-common/src/options.rs | 31 +++++++++++++++++++
proxmox-installer-common/src/setup.rs | 21 +++++++++++--
proxmox-tui-installer/src/setup.rs | 2 ++
proxmox-tui-installer/src/views/bootdisk.rs | 31 ++++++++++++++-----
11 files changed, 168 insertions(+), 13 deletions(-)
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/btrfs.toml
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH installer 1/6] fix #5250: install: config: add new `btrfs_opts` with `compress` config option
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
@ 2024-05-13 12:13 ` Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 2/6] fix #5250: install: write btrfs `compress` option to fstab Christoph Heiss
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Proxmox/Install/Config.pm | 15 ++++++++++
proxmox-auto-installer/src/utils.rs | 1 +
proxmox-installer-common/src/options.rs | 31 +++++++++++++++++++++
proxmox-installer-common/src/setup.rs | 21 ++++++++++++--
proxmox-tui-installer/src/setup.rs | 2 ++
proxmox-tui-installer/src/views/bootdisk.rs | 5 ++--
6 files changed, 71 insertions(+), 4 deletions(-)
diff --git a/Proxmox/Install/Config.pm b/Proxmox/Install/Config.pm
index ecd8a74..09edf11 100644
--- a/Proxmox/Install/Config.pm
+++ b/Proxmox/Install/Config.pm
@@ -79,6 +79,9 @@ my sub init_cfg {
copies => 1,
arc_max => Proxmox::Install::RunEnv::default_zfs_arc_max(), # in MiB
},
+ btrfs_opts => {
+ compress => 'off',
+ },
# TODO: single disk selection config
target_hd => undef,
disk_selection => {},
@@ -173,6 +176,18 @@ sub get_zfs_opt {
return defined($k) ? $zfs_opts->{$k} : $zfs_opts;
}
+sub set_btrfs_opt {
+ my ($k, $v) = @_;
+ my $opts = get('btrfs_opts');
+ croak "unknown btrfs opts key '$k'" if !exists($opts->{$k});
+ $opts->{$k} = $v;
+}
+sub get_btrfs_opt {
+ my ($k) = @_;
+ my $opts = get('btrfs_opts');
+ return defined($k) ? $opts->{$k} : $opts;
+}
+
sub set_target_hd { set_key('target_hd', $_[0]); }
sub get_target_hd { return get('target_hd'); }
diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs
index 202ad41..30b6196 100644
--- a/proxmox-auto-installer/src/utils.rs
+++ b/proxmox-auto-installer/src/utils.rs
@@ -326,6 +326,7 @@ pub fn parse_answer(
minfree: None,
maxvz: None,
zfs_opts: None,
+ btrfs_opts: None,
target_hd: None,
disk_selection: BTreeMap::new(),
lvm_auto_rename: 1,
diff --git a/proxmox-installer-common/src/options.rs b/proxmox-installer-common/src/options.rs
index e77914b..972b66c 100644
--- a/proxmox-installer-common/src/options.rs
+++ b/proxmox-installer-common/src/options.rs
@@ -102,10 +102,40 @@ impl LvmBootdiskOptions {
}
}
+/// See the accompanying mount option in btrfs(5).
+#[derive(Copy, Clone, Debug, Default, Deserialize, Eq, PartialEq)]
+#[serde(rename_all(deserialize = "lowercase"))]
+pub enum BtrfsCompressOption {
+ On,
+ #[default]
+ Off,
+ Zlib,
+ Lzo,
+ Zstd,
+}
+
+impl fmt::Display for BtrfsCompressOption {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "{}", format!("{self:?}").to_lowercase())
+ }
+}
+
+impl From<&BtrfsCompressOption> for String {
+ fn from(value: &BtrfsCompressOption) -> Self {
+ value.to_string()
+ }
+}
+
+pub const BTRFS_COMPRESS_OPTIONS: &[BtrfsCompressOption] = {
+ use BtrfsCompressOption::*;
+ &[On, Off, Zlib, Lzo, Zstd]
+};
+
#[derive(Clone, Debug)]
pub struct BtrfsBootdiskOptions {
pub disk_size: f64,
pub selected_disks: Vec<usize>,
+ pub compress: BtrfsCompressOption,
}
impl BtrfsBootdiskOptions {
@@ -115,6 +145,7 @@ impl BtrfsBootdiskOptions {
Self {
disk_size: disk.size,
selected_disks: (0..disks.len()).collect(),
+ compress: BtrfsCompressOption::default(),
}
}
}
diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs
index 64d05af..81f3533 100644
--- a/proxmox-installer-common/src/setup.rs
+++ b/proxmox-installer-common/src/setup.rs
@@ -13,8 +13,8 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
use crate::{
options::{
- BtrfsRaidLevel, Disk, FsType, ZfsBootdiskOptions, ZfsChecksumOption, ZfsCompressOption,
- ZfsRaidLevel,
+ BtrfsBootdiskOptions, BtrfsCompressOption, BtrfsRaidLevel, Disk, FsType,
+ ZfsBootdiskOptions, ZfsChecksumOption, ZfsCompressOption, ZfsRaidLevel,
},
utils::CidrAddress,
};
@@ -220,6 +220,20 @@ impl From<ZfsBootdiskOptions> for InstallZfsOption {
}
}
+#[derive(Debug, Deserialize, Serialize)]
+pub struct InstallBtrfsOption {
+ #[serde(serialize_with = "serialize_as_display")]
+ pub compress: BtrfsCompressOption,
+}
+
+impl From<BtrfsBootdiskOptions> for InstallBtrfsOption {
+ fn from(opts: BtrfsBootdiskOptions) -> Self {
+ InstallBtrfsOption {
+ compress: opts.compress,
+ }
+ }
+}
+
pub fn read_json<T: for<'de> Deserialize<'de>, P: AsRef<Path>>(path: P) -> Result<T, String> {
let file = File::open(path).map_err(|err| err.to_string())?;
let reader = BufReader::new(file);
@@ -466,6 +480,9 @@ pub struct InstallConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub zfs_opts: Option<InstallZfsOption>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub btrfs_opts: Option<InstallBtrfsOption>,
+
#[serde(
serialize_with = "serialize_disk_opt",
skip_serializing_if = "Option::is_none",
diff --git a/proxmox-tui-installer/src/setup.rs b/proxmox-tui-installer/src/setup.rs
index 8c01e42..2622c8e 100644
--- a/proxmox-tui-installer/src/setup.rs
+++ b/proxmox-tui-installer/src/setup.rs
@@ -15,6 +15,7 @@ impl From<InstallerOptions> for InstallConfig {
minfree: None,
maxvz: None,
zfs_opts: None,
+ btrfs_opts: None,
target_hd: None,
disk_selection: BTreeMap::new(),
lvm_auto_rename: 0,
@@ -60,6 +61,7 @@ impl From<InstallerOptions> for InstallConfig {
}
AdvancedBootdiskOptions::Btrfs(btrfs) => {
config.hdsize = btrfs.disk_size;
+ config.btrfs_opts = Some(btrfs.clone().into());
for (i, disk) in options.bootdisk.disks.iter().enumerate() {
config
diff --git a/proxmox-tui-installer/src/views/bootdisk.rs b/proxmox-tui-installer/src/views/bootdisk.rs
index f6fdb31..107fc9c 100644
--- a/proxmox-tui-installer/src/views/bootdisk.rs
+++ b/proxmox-tui-installer/src/views/bootdisk.rs
@@ -19,8 +19,8 @@ use proxmox_installer_common::{
check_zfs_raid_config,
},
options::{
- AdvancedBootdiskOptions, BootdiskOptions, BtrfsBootdiskOptions, Disk, FsType,
- LvmBootdiskOptions, ZfsBootdiskOptions, ZFS_CHECKSUM_OPTIONS, ZFS_COMPRESS_OPTIONS,
+ AdvancedBootdiskOptions, BootdiskOptions, BtrfsBootdiskOptions, BtrfsCompressOption, Disk,
+ FsType, LvmBootdiskOptions, ZfsBootdiskOptions, ZFS_CHECKSUM_OPTIONS, ZFS_COMPRESS_OPTIONS,
},
setup::{BootType, ProductConfig, ProxmoxProduct, RuntimeInfo},
};
@@ -544,6 +544,7 @@ impl BtrfsBootdiskOptionsView {
BtrfsBootdiskOptions {
disk_size,
selected_disks,
+ compress: BtrfsCompressOption::default(),
},
))
}
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH installer 2/6] fix #5250: install: write btrfs `compress` option to fstab
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 1/6] fix #5250: install: config: add new `btrfs_opts` with `compress` config option Christoph Heiss
@ 2024-05-13 12:13 ` Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 3/6] fix #5250: proxinstall: expose new btrfs `compress` option Christoph Heiss
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
`compress` instead of `compress-force` is used, as the latter can have
unindented (performance) implications, as the name implies. That would
be neither expected by users nor should such a decision made without the
user explicitly opting for it.
Others do the same, e.g. the installer for RedHat/Fedora systems (aka.
Anaconda) opts for `compress` also. And if Fedora uses it for their
systems, it's fine for us too.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Proxmox/Install.pm | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm
index c0f8955..f3bc5aa 100644
--- a/Proxmox/Install.pm
+++ b/Proxmox/Install.pm
@@ -1011,7 +1011,13 @@ sub extract_data {
die "unable to detect FS UUID" if !defined($fsuuid);
- $fstab .= "UUID=$fsuuid / btrfs defaults 0 1\n";
+ my $btrfs_opts = Proxmox::Install::Config::get_btrfs_opt();
+
+ my $mountopts = 'defaults';
+ $mountopts .= ",compress=$btrfs_opts->{compress}"
+ if $btrfs_opts->{compress} ne 'off';
+
+ $fstab .= "UUID=$fsuuid / btrfs $mountopts 0 1\n";
} else {
my $root_mountopt = $fssetup->{$filesys}->{root_mountopt} || 'defaults';
$fstab .= "$rootdev / $filesys ${root_mountopt} 0 1\n";
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH installer 3/6] fix #5250: proxinstall: expose new btrfs `compress` option
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 1/6] fix #5250: install: config: add new `btrfs_opts` with `compress` config option Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 2/6] fix #5250: install: write btrfs `compress` option to fstab Christoph Heiss
@ 2024-05-13 12:13 ` Christoph Heiss
2024-05-14 8:14 ` Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 4/6] fix #5250: tui: " Christoph Heiss
` (2 subsequent siblings)
5 siblings, 1 reply; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Proxmox/Install.pm | 7 +++++--
proxinstall | 15 +++++++++++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm
index f3bc5aa..60f38e5 100644
--- a/Proxmox/Install.pm
+++ b/Proxmox/Install.pm
@@ -1014,8 +1014,11 @@ sub extract_data {
my $btrfs_opts = Proxmox::Install::Config::get_btrfs_opt();
my $mountopts = 'defaults';
- $mountopts .= ",compress=$btrfs_opts->{compress}"
- if $btrfs_opts->{compress} ne 'off';
+ if ($btrfs_opts->{compress} eq 'on') {
+ $mountopts .= ',compress';
+ } elsif ($btrfs_opts->{compress} ne 'off') {
+ $mountopts .= ",compress=$btrfs_opts->{compress}";
+ }
$fstab .= "UUID=$fsuuid / btrfs $mountopts 0 1\n";
} else {
diff --git a/proxinstall b/proxinstall
index a6a4cfb..7180fe6 100755
--- a/proxinstall
+++ b/proxinstall
@@ -1160,6 +1160,21 @@ my $create_raid_advanced_grid = sub {
my $create_btrfs_raid_advanced_grid = sub {
my ($hdsize_btn) = @_;
my $labeled_widgets = [];
+
+ my $combo_compress = Gtk3::ComboBoxText->new();
+ $combo_compress->set_tooltip_text("btrfs compression algorithm for boot volume");
+ my $comp_opts = ["on", "off", "zlib", "lzo", "zstd"];
+ foreach my $opt (@$comp_opts) {
+ $combo_compress->append($opt, $opt);
+ }
+ my $compress = Proxmox::Install::Config::get_btrfs_opt('compress') // 'off';
+ $combo_compress->set_active_id($compress);
+ $combo_compress->signal_connect (changed => sub {
+ my $w = shift;
+ Proxmox::Install::Config::set_btrfs_opt('compress', $w->get_active_text());
+ });
+ push @$labeled_widgets, ['compress', $combo_compress];
+
push @$labeled_widgets, ['hdsize', $hdsize_btn, 'GB'];
return $create_label_widget_grid->($labeled_widgets);;
};
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH installer 4/6] fix #5250: tui: expose new btrfs `compress` option
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
` (2 preceding siblings ...)
2024-05-13 12:13 ` [pve-devel] [PATCH installer 3/6] fix #5250: proxinstall: expose new btrfs `compress` option Christoph Heiss
@ 2024-05-13 12:13 ` Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 5/6] fix #5250: auto-installer: " Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 6/6] auto-installer: add btrfs answer parsing tests Christoph Heiss
5 siblings, 0 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
proxmox-tui-installer/src/views/bootdisk.rs | 34 +++++++++++++++------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/proxmox-tui-installer/src/views/bootdisk.rs b/proxmox-tui-installer/src/views/bootdisk.rs
index 107fc9c..7a34d63 100644
--- a/proxmox-tui-installer/src/views/bootdisk.rs
+++ b/proxmox-tui-installer/src/views/bootdisk.rs
@@ -19,8 +19,9 @@ use proxmox_installer_common::{
check_zfs_raid_config,
},
options::{
- AdvancedBootdiskOptions, BootdiskOptions, BtrfsBootdiskOptions, BtrfsCompressOption, Disk,
- FsType, LvmBootdiskOptions, ZfsBootdiskOptions, ZFS_CHECKSUM_OPTIONS, ZFS_COMPRESS_OPTIONS,
+ AdvancedBootdiskOptions, BootdiskOptions, BtrfsBootdiskOptions, Disk, FsType,
+ LvmBootdiskOptions, ZfsBootdiskOptions, BTRFS_COMPRESS_OPTIONS, ZFS_CHECKSUM_OPTIONS,
+ ZFS_COMPRESS_OPTIONS,
},
setup::{BootType, ProductConfig, ProxmoxProduct, RuntimeInfo},
};
@@ -521,12 +522,23 @@ struct BtrfsBootdiskOptionsView {
impl BtrfsBootdiskOptionsView {
fn new(disks: &[Disk], options: &BtrfsBootdiskOptions) -> Self {
- let view = MultiDiskOptionsView::new(
- disks,
- &options.selected_disks,
- FormView::new().child("hdsize", DiskSizeEditView::new().content(options.disk_size)),
- )
- .top_panel(TextView::new("Btrfs integration is a technology preview!").center());
+ let inner = FormView::new()
+ .child(
+ "compress",
+ SelectView::new()
+ .popup()
+ .with_all(BTRFS_COMPRESS_OPTIONS.iter().map(|o| (o.to_string(), *o)))
+ .selected(
+ BTRFS_COMPRESS_OPTIONS
+ .iter()
+ .position(|o| *o == options.compress)
+ .unwrap_or_default(),
+ ),
+ )
+ .child("hdsize", DiskSizeEditView::new().content(options.disk_size));
+
+ let view = MultiDiskOptionsView::new(disks, &options.selected_disks, inner)
+ .top_panel(TextView::new("Btrfs integration is a technology preview!").center());
Self { view }
}
@@ -537,14 +549,16 @@ impl BtrfsBootdiskOptionsView {
fn get_values(&mut self) -> Option<(Vec<Disk>, BtrfsBootdiskOptions)> {
let (disks, selected_disks) = self.view.get_disks_and_selection()?;
- let disk_size = self.view.inner_mut()?.get_value::<DiskSizeEditView, _>(0)?;
+ let view = self.view.inner_mut()?;
+ let disk_size = view.get_value::<DiskSizeEditView, _>(1)?;
+ let compress = view.get_value::<SelectView<_>, _>(0)?;
Some((
disks,
BtrfsBootdiskOptions {
disk_size,
selected_disks,
- compress: BtrfsCompressOption::default(),
+ compress,
},
))
}
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH installer 5/6] fix #5250: auto-installer: expose new btrfs `compress` option
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
` (3 preceding siblings ...)
2024-05-13 12:13 ` [pve-devel] [PATCH installer 4/6] fix #5250: tui: " Christoph Heiss
@ 2024-05-13 12:13 ` Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 6/6] auto-installer: add btrfs answer parsing tests Christoph Heiss
5 siblings, 0 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
proxmox-auto-installer/src/answer.rs | 6 +++++-
proxmox-auto-installer/src/utils.rs | 7 ++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/proxmox-auto-installer/src/answer.rs b/proxmox-auto-installer/src/answer.rs
index aab7198..add36a3 100644
--- a/proxmox-auto-installer/src/answer.rs
+++ b/proxmox-auto-installer/src/answer.rs
@@ -1,6 +1,9 @@
use clap::ValueEnum;
use proxmox_installer_common::{
- options::{BtrfsRaidLevel, FsType, ZfsChecksumOption, ZfsCompressOption, ZfsRaidLevel},
+ options::{
+ BtrfsCompressOption, BtrfsRaidLevel, FsType, ZfsChecksumOption, ZfsCompressOption,
+ ZfsRaidLevel,
+ },
utils::{CidrAddress, Fqdn},
};
use serde::{Deserialize, Serialize};
@@ -269,6 +272,7 @@ pub struct LvmOptions {
pub struct BtrfsOptions {
pub hdsize: Option<f64>,
pub raid: Option<BtrfsRaidLevel>,
+ pub compress: Option<BtrfsCompressOption>,
}
#[derive(Clone, Deserialize, Serialize, Debug, PartialEq)]
diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs
index 30b6196..b08c617 100644
--- a/proxmox-auto-installer/src/utils.rs
+++ b/proxmox-auto-installer/src/utils.rs
@@ -10,7 +10,9 @@ use crate::{
};
use proxmox_installer_common::{
options::{FsType, NetworkOptions, ZfsChecksumOption, ZfsCompressOption},
- setup::{InstallConfig, InstallZfsOption, LocaleInfo, RuntimeInfo, SetupInfo},
+ setup::{
+ InstallBtrfsOption, InstallConfig, InstallZfsOption, LocaleInfo, RuntimeInfo, SetupInfo,
+ },
};
use serde::{Deserialize, Serialize};
@@ -377,6 +379,9 @@ pub fn parse_answer(
config.hdsize = btrfs
.hdsize
.unwrap_or(runtime_info.disks[first_selected_disk].size);
+ config.btrfs_opts = Some(InstallBtrfsOption {
+ compress: btrfs.compress.unwrap_or_default(),
+ })
}
}
Ok(config)
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH installer 6/6] auto-installer: add btrfs answer parsing tests
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
` (4 preceding siblings ...)
2024-05-13 12:13 ` [pve-devel] [PATCH installer 5/6] fix #5250: auto-installer: " Christoph Heiss
@ 2024-05-13 12:13 ` Christoph Heiss
5 siblings, 0 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-13 12:13 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
.../tests/resources/parse_answer/btrfs.json | 24 +++++++++++++++++++
.../tests/resources/parse_answer/btrfs.toml | 17 +++++++++++++
2 files changed, 41 insertions(+)
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/btrfs.toml
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json b/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
new file mode 100644
index 0000000..d6cc30d
--- /dev/null
+++ b/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
@@ -0,0 +1,24 @@
+{
+ "autoreboot": 1,
+ "cidr": "192.168.1.114/24",
+ "country": "at",
+ "dns": "192.168.1.254",
+ "domain": "testinstall",
+ "disk_selection": {
+ "6": "6",
+ "7": "7"
+ },
+ "lvm_auto_rename": 1,
+ "filesys": "btrfs (RAID1)",
+ "gateway": "192.168.1.1",
+ "hdsize": 80.0,
+ "hostname": "pveauto",
+ "keymap": "de",
+ "mailto": "mail@no.invalid",
+ "mngmt_nic": "eno1",
+ "password": "123456",
+ "timezone": "Europe/Vienna",
+ "btrfs_opts": {
+ "compress": "zlib"
+ }
+}
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/btrfs.toml b/proxmox-auto-installer/tests/resources/parse_answer/btrfs.toml
new file mode 100644
index 0000000..8fcd27d
--- /dev/null
+++ b/proxmox-auto-installer/tests/resources/parse_answer/btrfs.toml
@@ -0,0 +1,17 @@
+[global]
+keyboard = "de"
+country = "at"
+fqdn = "pveauto.testinstall"
+mailto = "mail@no.invalid"
+timezone = "Europe/Vienna"
+root_password = "123456"
+
+[network]
+source = "from-dhcp"
+
+[disk-setup]
+filesystem = "btrfs"
+btrfs.raid = "raid1"
+btrfs.compress = "zlib"
+btrfs.hdsize = 80
+disk_list = ["sda", "sdb"]
--
2.44.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pve-devel] [PATCH installer 3/6] fix #5250: proxinstall: expose new btrfs `compress` option
2024-05-13 12:13 ` [pve-devel] [PATCH installer 3/6] fix #5250: proxinstall: expose new btrfs `compress` option Christoph Heiss
@ 2024-05-14 8:14 ` Christoph Heiss
0 siblings, 0 replies; 8+ messages in thread
From: Christoph Heiss @ 2024-05-14 8:14 UTC (permalink / raw)
Cc: Proxmox VE development discussion
On Mon, May 13, 2024 at 02:13:52PM +0200, Christoph Heiss wrote:
> Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
> ---
> Proxmox/Install.pm | 7 +++++--
> proxinstall | 15 +++++++++++++++
> 2 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm
> index f3bc5aa..60f38e5 100644
> --- a/Proxmox/Install.pm
> +++ b/Proxmox/Install.pm
> @@ -1014,8 +1014,11 @@ sub extract_data {
> my $btrfs_opts = Proxmox::Install::Config::get_btrfs_opt();
>
> my $mountopts = 'defaults';
> - $mountopts .= ",compress=$btrfs_opts->{compress}"
> - if $btrfs_opts->{compress} ne 'off';
> + if ($btrfs_opts->{compress} eq 'on') {
> + $mountopts .= ',compress';
> + } elsif ($btrfs_opts->{compress} ne 'off') {
> + $mountopts .= ",compress=$btrfs_opts->{compress}";
> + }
That was supposed to be squashed into the previous patch, whoops!
I'll send a v2 soon if nothing else comes up, sorry for the noise.
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-05-14 8:14 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-13 12:13 [pve-devel] [PATCH installer 0/6] fix #5250: add btrfs `compress` mount option support Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 1/6] fix #5250: install: config: add new `btrfs_opts` with `compress` config option Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 2/6] fix #5250: install: write btrfs `compress` option to fstab Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 3/6] fix #5250: proxinstall: expose new btrfs `compress` option Christoph Heiss
2024-05-14 8:14 ` Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 4/6] fix #5250: tui: " Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 5/6] fix #5250: auto-installer: " Christoph Heiss
2024-05-13 12:13 ` [pve-devel] [PATCH installer 6/6] auto-installer: add btrfs answer parsing tests Christoph Heiss
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.