[pve-devel] [PATCH v2 container 1/9] tools: add can_use_new_mount_api helper
Oguz Bektas
o.bektas at proxmox.com
Wed Nov 13 13:30:08 CET 2019
hi,
On Wed, Nov 13, 2019 at 10:33:11AM +0100, Wolfgang Bumiller wrote:
> Signed-off-by: Wolfgang Bumiller <w.bumiller at 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
>
More information about the pve-devel
mailing list