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 AC3B91FF146 for ; Tue, 07 Jul 2026 10:21:07 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 255052148A; Tue, 07 Jul 2026 10:21:03 +0200 (CEST) From: Maximiliano Sandoval To: pve-devel@lists.proxmox.com Subject: [PATCH storage v5 2/2] nfs: use rpcinfo as a showmount fallback for nfs3 Date: Tue, 7 Jul 2026 10:18:53 +0200 Message-ID: <20260707081854.106004-3-m.sandoval@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260707081854.106004-1-m.sandoval@proxmox.com> References: <20260707081854.106004-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: 1783412421907 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.000 Adjusted score from AWL reputation of From: address 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: 7DWPYTXJIL4Z4DIZCINX542MQCZDRMQ4 X-Message-ID-Hash: 7DWPYTXJIL4Z4DIZCINX542MQCZDRMQ4 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 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/PVE/Storage/NFSPlugin.pm b/src/PVE/Storage/NFSPlugin.pm index 56dbd9ec..f349daf8 100644 --- a/src/PVE/Storage/NFSPlugin.pm +++ b/src/PVE/Storage/NFSPlugin.pm @@ -198,6 +198,9 @@ sub check_connection { # no exports are listed $cmd = $nfs_get_rpcinfo_command->($server, '4'); } else { + # FIXME: MAJOR VERSION: Consider switching to rpcinfo. Considerations: + # - Some NFSv3 servers might only support UDP (cf. RFC 1813, Section 2.3) + # - For a NFSv3-only server the timeouts add up to a worst-case scenario of 20 seconds $cmd = ['/sbin/showmount', '--no-headers', '--exports', $server]; } @@ -214,6 +217,13 @@ 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 + $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