From 89b9ac961a0427cf5a886ddedbb35f3af65d1cae Mon Sep 17 00:00:00 2001 From: Alwin Antreich Date: Wed, 16 Dec 2020 12:59:04 +0100 Subject: [PATCH] fix: check connection for nfs v4 only server the check_connection is done by querying the exports of the nfs server in question. With nfs v4 those exports aren't listed anymore since nfs v4 employs a pseudo-filesystem starting from root (/). rpcinfo allows to query the existence of an nfs v4 service. Signed-off-by: Alwin Antreich --- PVE/Storage/NFSPlugin.pm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PVE/Storage/NFSPlugin.pm b/PVE/Storage/NFSPlugin.pm index e8e27c0..72e06c2 100644 --- a/PVE/Storage/NFSPlugin.pm +++ b/PVE/Storage/NFSPlugin.pm @@ -160,8 +160,16 @@ sub check_connection { my ($class, $storeid, $scfg) = @_; my $server = $scfg->{server}; + my $opts = $scfg->{options}; - my $cmd = ['/sbin/showmount', '--no-headers', '--exports', $server]; + my $cmd; + if (defined($opts) && $opts =~ /vers=4.*/) { + # nfsv4 uses a pseudo-filesystem always beginning with / + # no exports are listed + $cmd = ['/usr/sbin/rpcinfo', '-t', $server, 'nfs', '4']; + } else { + $cmd = ['/sbin/showmount', '--no-headers', '--exports', $server]; + } eval { run_command($cmd, timeout => 10, outfunc => sub {}, errfunc => sub {}) }; if (my $err = $@) {