On Thu, 2018-06-21 at 16:35 +0000, Manjunath Patil wrote: > Presently the client mount hangs for NFS4ERR_NOSPC repsonse from > server > during create session operation. Handle this error at the client side > and pass it back to user-space, which may chose to mount with lower > nfs > versions. > > Signed-off-by: Manjunath Patil <manjunath.b.patil@xxxxxxxxxx> > --- > fs/nfs/nfs4state.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c > index 2bf2eaa..2134cf5 100644 > --- a/fs/nfs/nfs4state.c > +++ b/fs/nfs/nfs4state.c > @@ -381,6 +381,8 @@ int nfs41_discover_server_trunking(struct > nfs_client *clp, > } > nfs4_schedule_state_manager(clp); > status = nfs_wait_client_init_complete(clp); > + if (!status) /* -ERESTARTSYS */ > + status = nfs_client_init_status(clp); Nack... The trunking code is _not_ the place to do session error detection. > if (status < 0) > nfs_put_client(clp); > return status; > @@ -1919,6 +1921,9 @@ static int > nfs4_handle_reclaim_lease_error(struct nfs_client *clp, int status) > dprintk("%s: exit with error %d for server %s\n", > __func__, -EPROTONOSUPPORT, clp- > >cl_hostname); > return -EPROTONOSUPPORT; > + case -NFS4ERR_NOSPC: > + nfs_mark_client_ready(clp, status); > + /*fall through*/ Nack... This would cause existing mounts to suddenly permanently fail. > case -NFS4ERR_NOT_SAME: /* FixMe: implement recovery > * in nfs4_exchange_id */ > default: > @@ -2186,6 +2191,7 @@ int nfs4_discover_server_trunking(struct > nfs_client *clp, > case 0: > case -EINTR: > case -ERESTARTSYS: > + case -NFS4ERR_NOSPC: > break; > case -ETIMEDOUT: > if (clnt->cl_softrtry) -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥