I haven’t done enough with Proxy… There is a handle mapping option that you may need to use if the proxied handles are too big for NFSv3.

 

Frank

 

From: Nick Couchman [mailto:nick.e.couchman@gmail.com]
Sent: Friday, June 25, 2021 4:38 PM
To: support@lists.nfs-ganesha.org
Subject: [NFS-Ganesha-Support] Proxy FSAL - NFS4 -> 3

 

I'm using Ganesha NFS with the Proxy FSAL. It seems to work fine as long as I'm going between NFS clients and servers of the same version (NFSv4.1 client -> NFSv4.1 server). However, I have a situation where I'm trying to proxy a NFSv4.1 service (Azure File Share NFS) for clients that do not support NFSv4. When I do this, the "mount" command on the NFSv3 clients works fine, but as soon as I try to do any data operations, I get I/O errors:

 

# mount -t nfs -o vers=3 10.11.12.13:/azure-nfs-file /mnt/azure
# ls -l /mnt/azure
ls: reading directory '/mnt/azure': Remote I/O error
total 0

 

I've posted my (sanitized) configuration below. My questions are:

1) Is it possible to use Ganesha to proxy this way - allowing clients to access a NFS server that differs in version, or is this not supported?

2) Am I missing something within my Ganesha config to enable this?

 

I can also provide the debug logging, if that's helpful.

 

Thanks - Nick

 

==ganesha.conf==

NFS_CORE_PARAM {
        mount_path_pseudo = true;
        Protocols = 3,4;
        MNT_Port = 20048;
}

LOG {
        Default_Log_Level = INFO;
        Components {
                FSAL = FULL_DEBUG;
        }
}

EXPORT_DEFAULTS {
        Access_Type = RW;
}

## Azure NFS Share
EXPORT
{
        Export_id = 902;
        Path = "/stgaccount/azure-file";
        Pseudo = "/azure-file";
        Access_Type = RW;
        Squash = no_root_squash;
        Sectype = sys;
        FSAL {
                Name = proxy;
                Srv_Addr = 10.1.2.3;
                Enable_Handle_Mapping = TRUE;
                HandleMap_DB_Dir = "/var/ganesha/handledb/902";
                HandleMap_Tmp_Dir = "/run/ganesha/tmp/902";
                HandleMap_DB_Count = 8;
        }
}