From c31aee36d88f2b50724547c4bd606b5eb2ed7c2d Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 19 Feb 2021 15:01:36 +0100 Subject: [PATCH] zpool: avoid wrong mount-decoding of dataset this was mistakenly done as the procfs code uses it and it was assumed we need to decode this too to get both in the same encoding-space and thus correct comparission. But only procfs has that encoding, we don't have it for pool values in the storage config, so we must not do a decode on that value, that could potentially break. Signed-off-by: Thomas Lamprecht --- PVE/Storage/ZFSPoolPlugin.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm index 4806ba5..9dfe86f 100644 --- a/PVE/Storage/ZFSPoolPlugin.pm +++ b/PVE/Storage/ZFSPoolPlugin.pm @@ -531,7 +531,7 @@ sub activate_storage { my $dataset_mounted = sub { my $mounted = 0; - my $dataset_dec = PVE::ProcFSTools::decode_mount($dataset); + my $mounts = eval { PVE::ProcFSTools::parse_proc_mounts() }; warn "$@\n" if $@; foreach my $mp (@$mounts) { @@ -540,7 +540,7 @@ sub activate_storage { # check for root-dataset of storage or any child-dataset. # root-dataset could have 'canmount=off'. If any child is mounted # heuristically assume that `zfs mount -a` was successful - next if $what !~ m!^$dataset_dec(?:/|$)!; + next if $what !~ m!^$dataset(?:/|$)!; $mounted = 1; last; }