On Mon, Mar 22, 2021 at 03:53:01PM +0000, Trond Myklebust wrote: > On Mon, 2021-03-22 at 13:29 +0800, Eryu Guan wrote: > > Mounting NFSv3 uses default timeout parameters specified by underlying > > sunrpc transport, and mount options like 'timeo' and 'retrans', unlike > > NFSv4, are not honored. > > > > But sometimes we want to set non-default timeout value when mounting > > NFSv3, so pass 'timeo' and 'retrans' to nfs_mount() and fill the > > 'timeout' field of struct rpc_create_args before creating RPC > > connection. This is also consistent with NFSv4 behavior. > > > > Note that this only sets the timeout value of rpc connection to mountd, > > but the timeout of rpcbind connection should be set as well. A later > > patch will fix the rpcbind part. > > > > Signed-off-by: Eryu Guan <eguan@xxxxxxxxxxxxxxxxx> > > --- > > fs/nfs/internal.h | 2 +- > > fs/nfs/mount_clnt.c | 12 +++++++----- > > fs/nfs/super.c | 2 +- > > 3 files changed, 9 insertions(+), 7 deletions(-) > > > > diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h > > index 7b644d6c09e4..cf0d7db24d44 100644 > > --- a/fs/nfs/internal.h > > +++ b/fs/nfs/internal.h > > @@ -180,7 +180,7 @@ struct nfs_mount_request { > > struct net *net; > > }; > > > > -extern int nfs_mount(struct nfs_mount_request *info); > > +extern int nfs_mount(struct nfs_mount_request *info, int timeo, int > > retrans); > > extern void nfs_umount(const struct nfs_mount_request *info); > > > > /* client.c */ > > diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c > > index dda5c3e65d8d..248319254672 100644 > > --- a/fs/nfs/mount_clnt.c > > +++ b/fs/nfs/mount_clnt.c > > @@ -137,13 +137,13 @@ struct mnt_fhstatus { > > * nfs_mount - Obtain an NFS file handle for the given host and path > > * @info: pointer to mount request arguments > > * > > - * Uses default timeout parameters specified by underlying transport. > > On > > - * successful return, the auth_flavs list and auth_flav_len will be > > populated > > - * with the list from the server or a faked-up list if the server > > didn't > > - * provide one. > > + * Uses timeout parameters specified by caller. On successful return, > > the > > + * auth_flavs list and auth_flav_len will be populated with the list > > from the > > + * server or a faked-up list if the server didn't provide one. > > */ > > -int nfs_mount(struct nfs_mount_request *info) > > +int nfs_mount(struct nfs_mount_request *info, int timeo, int retrans) > > > fs/nfs/mount_clnt.c:145: warning: Function parameter or member 'timeo' > not described in 'nfs_mount' > fs/nfs/mount_clnt.c:145: warning: Function parameter or member > 'retrans' not described in 'nfs_mount' Fixed in v2, thanks! Eryu > > > -- > Trond Myklebust > Linux NFS client maintainer, Hammerspace > trond.myklebust@xxxxxxxxxxxxxxx > >