Signed-off-by: Wolfgang Bumiller <w.bumil...@proxmox.com>
---
New patch

 src/PVE/LXC/Tools.pm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/PVE/LXC/Tools.pm b/src/PVE/LXC/Tools.pm
index bebd7d8..0256b6a 100644
--- a/src/PVE/LXC/Tools.pm
+++ b/src/PVE/LXC/Tools.pm
@@ -2,6 +2,8 @@
 
 package PVE::LXC::Tools;
 
+use Errno qw(ENOSYS);
+
 use PVE::SafeSyslog;
 
 # LXC introduced an `lxc.hook.version` property which allows hooks to be 
executed in different
@@ -130,4 +132,20 @@ sub cgroup_do_write($$) {
     return 1;
 }
 
+# Check whether the kernel supports the new mount api. This is used in the 
pre-start hook and in
+# the hotplugging code.
+my $cached_can_use_new_mount_api = undef;
+sub can_use_new_mount_api() {
+    if (!defined($cached_can_use_new_mount_api)) {
+       if (PVE::Tools::fsopen(0, 0)) {
+           # This should not be possible...
+           die "kernel behaved unexpectedly: fsopen(NULL, 0) did not fail!\n";
+       }
+       # On older kernels the syscall doesn't exist and we get ENOSYS. (For 
newer kernels this call
+       # will fail with EFAULT instead, since we pass in a NULL pointer as 
file system name.)
+       $cached_can_use_new_mount_api = ($! != ENOSYS);
+    }
+    return $cached_can_use_new_mount_api;
+}
+
 1;
-- 
2.20.1


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

Reply via email to