Previously, bind and device mount points were applied to the
configuration, but not actually hot-plugged/mounted, causing a
mismatch for running containers.

Reported in the community forum:
https://forum.proxmox.com/threads/113364/

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
---

Better viewed with -w

 src/PVE/LXC/Config.pm | 60 +++++++++++++++++++++----------------------
 1 file changed, 29 insertions(+), 31 deletions(-)

diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index b4b0261..23c1ba7 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -1471,40 +1471,38 @@ sub apply_pending_mountpoint {
 
     my $mp = $class->parse_volume($opt, $conf->{pending}->{$opt});
     my $old = $conf->{$opt};
-    if ($mp->{type} eq 'volume') {
-       if ($mp->{volume} =~ $PVE::LXC::NEW_DISK_RE) {
-           my $original_value = $conf->{pending}->{$opt};
-           my $vollist = PVE::LXC::create_disks(
-               $storecfg,
-               $vmid,
-               { $opt => $original_value },
-               $conf,
-               1,
-           );
-           if ($running) {
-               # Re-parse mount point:
-               my $mp = $class->parse_volume($opt, $conf->{pending}->{$opt});
-               eval {
-                   PVE::LXC::mountpoint_hotplug($vmid, $conf, $opt, $mp, 
$storecfg);
-               };
-               my $err = $@;
-               if ($err) {
-                   PVE::LXC::destroy_disks($storecfg, $vollist);
-                   # The pending-changes code collects errors but keeps on 
looping through further
-                   # pending changes, so unroll the change in $conf as well if 
destroy_disks()
-                   # didn't die().
-                   $conf->{pending}->{$opt} = $original_value;
-                   die $err;
-               }
-           }
-       } else {
-           die "skip\n" if $running && defined($old); # TODO: "changing" mount 
points?
-           $rescan_volume->($storecfg, $mp);
-           if ($running) {
+    if ($mp->{type} eq 'volume' && $mp->{volume} =~ $PVE::LXC::NEW_DISK_RE) {
+       my $original_value = $conf->{pending}->{$opt};
+       my $vollist = PVE::LXC::create_disks(
+           $storecfg,
+           $vmid,
+           { $opt => $original_value },
+           $conf,
+           1,
+       );
+       if ($running) {
+           # Re-parse mount point:
+           my $mp = $class->parse_volume($opt, $conf->{pending}->{$opt});
+           eval {
                PVE::LXC::mountpoint_hotplug($vmid, $conf, $opt, $mp, 
$storecfg);
+           };
+           my $err = $@;
+           if ($err) {
+               PVE::LXC::destroy_disks($storecfg, $vollist);
+               # The pending-changes code collects errors but keeps on looping 
through further
+               # pending changes, so unroll the change in $conf as well if 
destroy_disks()
+               # didn't die().
+               $conf->{pending}->{$opt} = $original_value;
+               die $err;
            }
-           $conf->{pending}->{$opt} = $class->print_ct_mountpoint($mp);
        }
+    } else {
+       die "skip\n" if $running && defined($old); # TODO: "changing" mount 
points?
+       $rescan_volume->($storecfg, $mp) if $mp->{type} eq 'volume';
+       if ($running) {
+           PVE::LXC::mountpoint_hotplug($vmid, $conf, $opt, $mp, $storecfg);
+       }
+       $conf->{pending}->{$opt} = $class->print_ct_mountpoint($mp);
     }
 
     if (defined($old)) {
-- 
2.30.2



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

Reply via email to