Makes it possible to clone and start a container whose ZFS subvols are not yet mounted for some reason. If a subvol cannot be mounted, there's a better error now: zfs error: cannot mount '/myzpool/subvol-103-disk-0': directory is not empty
Previously, cloning would quietly do an "empty" clone, and startup would fail with: mount_autodev: 1074 Permission denied - Failed to create "/dev" directory lxc_setup: 3238 Failed to mount "/dev" do_start: 1224 Failed to setup container "103" __sync_wait: 41 An error occurred in another process (expected sequence number 5) Signed-off-by: Fabian Ebner <[email protected]> --- Changes from v1: * not a change in this patch, but important: commit e8bb92bd2b1af95fd20db1b4aeb3dabc2811f571 moved volume activation to vm_start, meaning that the mount operation introduced by this patch does not happen (and fail) in the restricted apparmor context anymore * adapt commit message to reflect current behavior (when the first version was sent, starting failed quietly without producing an error) * rebase against current master Previous discussion: https://lists.proxmox.com/pipermail/pve-devel/2020-April/043088.html PVE/Storage/ZFSPoolPlugin.pm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm index 7c180ea..215b703 100644 --- a/PVE/Storage/ZFSPoolPlugin.pm +++ b/PVE/Storage/ZFSPoolPlugin.pm @@ -549,9 +549,14 @@ sub activate_volume { my (undef, undef, undef, undef, undef, undef, $format) = $class->parse_volname($volname); - return 1 if $format ne 'raw'; - - $class->zfs_wait_for_zvol_link($scfg, $volname); + if ($format eq 'raw') { + $class->zfs_wait_for_zvol_link($scfg, $volname); + } elsif ($format eq 'subvol') { + my $mounted = $class->zfs_get_properties($scfg, 'mounted', "$scfg->{pool}/$volname"); + if ($mounted !~ m/^yes$/) { + $class->zfs_request($scfg, undef, 'mount', "$scfg->{pool}/$volname"); + } + } return 1; } -- 2.20.1 _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
