hi,

On Wed, Nov 13, 2019 at 10:33:11AM +0100, Wolfgang Bumiller wrote:
> 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() {

i don't like these names.. isn't can_use_new_mount_api() a bit too
vague? "new" is also relative, it won't be "new" in a few releases

maybe something like can_hotplug_mountpoint() would be better,
describing what it checks in a more verbose way?

> +    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