From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id C57631FF146 for ; Tue, 07 Jul 2026 10:24:10 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 880262148C; Tue, 07 Jul 2026 10:24:06 +0200 (CEST) From: Maximiliano Sandoval To: pve-devel@lists.proxmox.com Subject: [PATCH storage v6 2/2] nfs: use rpcinfo as a showmount fallback for nfs3 Date: Tue, 7 Jul 2026 10:23:31 +0200 Message-ID: <20260707082332.111714-3-m.sandoval@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260707082332.111714-1-m.sandoval@proxmox.com> References: <20260707082332.111714-1-m.sandoval@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1783412605776 X-SPAM-LEVEL: Spam detection results: 0 DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: NOZQED2YRAP2FRG4R74SUGXE2RCZCWYD X-Message-ID-Hash: NOZQED2YRAP2FRG4R74SUGXE2RCZCWYD X-MailFrom: m.sandoval@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The check_connection call must succeed in order for the NFS storage to be activated. In a setup in which the NFS server does not list exports and which only supports NFSv3 this would result in the storage not being usable (not without manually mounting the NFS share and using a Directory storage instead). We add a fallback check with rpcinfo for this case. The rpcinfo check was replaced with showmount in f8b0d82f. At the time the rationale was that rpcinfo did not have support for ipv6 connections, which does not hold anymore. In order to not break compatibility with setups that already activate correctly, we add a rpcinfo check as a fallback for NFSv3-only setups only after the showmount command fails. Signed-off-by: Maximiliano Sandoval --- src/PVE/Storage/NFSPlugin.pm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/PVE/Storage/NFSPlugin.pm b/src/PVE/Storage/NFSPlugin.pm index 56dbd9ec..123f14a3 100644 --- a/src/PVE/Storage/NFSPlugin.pm +++ b/src/PVE/Storage/NFSPlugin.pm @@ -198,6 +198,8 @@ sub check_connection { # no exports are listed $cmd = $nfs_get_rpcinfo_command->($server, '4'); } else { + # FIXME: MAJOR VERSION: Consider switching to rpcinfo. Note that some NFSv3 servers might + # only support UDP (cf. RFC 1813, Section 2.3) $cmd = ['/sbin/showmount', '--no-headers', '--exports', $server]; } @@ -214,6 +216,15 @@ sub check_connection { return 0 if $port == 0; return PVE::Network::tcp_ping($server, $port, 2); + } else { + # NOTE: Some NFSv4-only servers might not support rpcbind as described at commit acff8954 + # NOTE: For a NFSv3-only server the two timeouts add up to a worst-case scenario of 20 + # seconds + $cmd = $nfs_get_rpcinfo_command->($server, '3'); + eval { + run_command($cmd, timeout => 10, outfunc => sub { }, errfunc => sub { }); + }; + return 1 if !$@; } return 0; } -- 2.47.3