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' -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx