From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 6938B61B70 for ; Mon, 28 Sep 2020 11:48:44 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5BC1D2CA19 for ; Mon, 28 Sep 2020 11:48:44 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 8790F2CA11 for ; Mon, 28 Sep 2020 11:48:43 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 5289D432D4 for ; Mon, 28 Sep 2020 11:48:43 +0200 (CEST) From: Fabian Ebner To: pve-devel@lists.proxmox.com Date: Mon, 28 Sep 2020 11:48:37 +0200 Message-Id: <20200928094837.26162-1-f.ebner@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.052 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH v2 storage] ZFS: mount subvols in activate_volume X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Sep 2020 09:48:44 -0000 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 --- 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