On Nov. 10, 2008, 22:20 +0200, Benny Halevy <bhalevy@xxxxxxxxxxx> wrote: > retry nfs4_create_server with lower minorversion on minorvers_mismatch error > > Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> review 11-14: move logic to reclaimer(); > --- > fs/nfs/client.c | 12 +++++++++++- > 1 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/fs/nfs/client.c b/fs/nfs/client.c > index 11c845d..0a8a082 100644 > --- a/fs/nfs/client.c > +++ b/fs/nfs/client.c > @@ -1118,15 +1118,17 @@ struct nfs_server *nfs4_create_server(const struct nfs_parsed_mount_data *data, > { > struct nfs_fattr fattr; > struct nfs_server *server; > + int minorvers = data->minorversion; > int error; > > dprintk("--> nfs4_create_server()\n"); > > +retry: > server = nfs_alloc_server(); > if (!server) > return ERR_PTR(-ENOMEM); > > - server->minorversion = data->minorversion; > + server->minorversion = minorvers; > > /* set up the general RPC client */ > error = nfs4_init_server(server, data); > @@ -1168,7 +1170,15 @@ struct nfs_server *nfs4_create_server(const struct nfs_parsed_mount_data *data, > return server; > > error: > + if (server->nfs_client && server->nfs_client->cl_recovery_status) > + error = server->nfs_client->cl_recovery_status; > nfs_free_server(server); > + if (minorvers > 0 && error == -NFS4ERR_MINOR_VERS_MISMATCH) { > + minorvers--; > + dprintk("%s: error %d retrying with minorvers=%d\n", > + __func__, error, minorvers); > + goto retry; > + } > dprintk("<-- nfs4_create_server() = error %d\n", error); > return ERR_PTR(error); > } -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html