[pve-devel] [PATCH container 5/5] support non-existing mount paths
Fabian Grünbichler
f.gruenbichler at proxmox.com
Mon May 30 11:45:57 CEST 2016
even if the mount target is missing more than one path
component. this is still far from ideal, but needed for pct
create/restore with complete mountpoint support.
---
src/PVE/LXC.pm | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index 7b4afa2..bffe03c 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -952,11 +952,24 @@ sub mountpoint_mount_path {
}
my $check_mount_path = sub {
- my ($path) = @_;
- $path = File::Spec->canonpath($path);
- my $real = Cwd::realpath($path);
- if ($real ne $path) {
+ my ($path, $rootdir) = @_;
+
+ my $real;
+
+ # only repeat if $rootdir is defined and $path does not exist
+ do {
+ $path = File::Spec->canonpath($path);
+ $real = Cwd::realpath($path);
+
+ # strip last component if $path does not exist at all
+ $path =~ s!/[^/]+$!!
+ if !defined($real);
+ } while (!defined($real) && defined($rootdir) && $rootdir ne $path);
+
+ if (defined($real) && $real ne $path) {
die "mount path modified by symlink: $path != $real";
+ } else {
+ return;
}
};
--
2.1.4
More information about the pve-devel
mailing list