all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH container] fix #5907: ignore conflicting mount options for read-only mounts
@ 2024-11-25 13:09 Filip Schauer
  2024-11-28 13:42 ` Fiona Ebner
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Filip Schauer @ 2024-11-25 13:09 UTC (permalink / raw)
  To: pve-devel

When mounting volumes as read-only, certain mount options like
"discard", "lazytime", and "noatime" are either ignored or can cause the
mount to fail. For example, attempting to mount with "-t zfs" and
"-o ro,discard" leads to an error: filesystem cannot be mounted due to
invalid option 'discard'.

This commit ensures that only valid mount options, such as "nodev",
"noexec", and "nosuid", are applied to read-only mounts, avoiding
potential mount failures.

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
---
 src/PVE/LXC.pm        | 8 ++++++--
 src/PVE/LXC/Config.pm | 6 ++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index e78e365..d01fafc 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -1865,11 +1865,16 @@ sub __mountpoint_mount {
 
     die "unknown snapshot path for '$volid'" if !$storage && defined($snapname);
 
+    my $readonly = $mountpoint->{ro};
     my $optlist = [];
 
     if (my $mountopts = $mountpoint->{mountoptions}) {
 	my @opts = split(/;/, $mountpoint->{mountoptions});
-	push @$optlist, grep { PVE::LXC::Config::is_valid_mount_option($_) } @opts;
+	if ($readonly || defined($snapname)) {
+	    push @$optlist, grep { PVE::LXC::Config::is_valid_ro_mount_option($_) } @opts;
+	} else {
+	    push @$optlist, grep { PVE::LXC::Config::is_valid_mount_option($_) } @opts;
+	}
     }
 
     my $acl = $mountpoint->{acl};
@@ -1880,7 +1885,6 @@ sub __mountpoint_mount {
     }
 
     my $optstring = join(',', @$optlist);
-    my $readonly = $mountpoint->{ro};
 
     my @extra_opts;
     @extra_opts = ('-o', $optstring) if $optstring;
diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index 5cc37f7..0740e8c 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -312,12 +312,18 @@ cfs_register_file('/lxc/', \&parse_pct_config, \&write_pct_config);
 
 
 my $valid_mount_option_re = qr/(discard|lazytime|noatime|nodev|noexec|nosuid)/;
+my $valid_ro_mount_option_re = qr/(nodev|noexec|nosuid)/;
 
 sub is_valid_mount_option {
     my ($option) = @_;
     return $option =~ $valid_mount_option_re;
 }
 
+sub is_valid_ro_mount_option {
+    my ($option) = @_;
+    return $option =~ $valid_ro_mount_option_re;
+}
+
 my $rootfs_desc = {
     volume => {
 	type => 'string',
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-11 12:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-25 13:09 [pve-devel] [PATCH container] fix #5907: ignore conflicting mount options for read-only mounts Filip Schauer
2024-11-28 13:42 ` Fiona Ebner
2024-11-28 14:56 ` Daniel Kral
2025-02-11 10:17 ` Fiona Ebner
2025-02-11 12:17   ` Thomas Lamprecht
2025-02-11 12:15 ` [pve-devel] applied: " Thomas Lamprecht

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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal