]> git.baikalelectronics.ru Git - kernel.git/commit
NFSv4.1: LAYOUTGET EDELAY loops timeout to the MDS
authorWeston Andros Adamson <dros@netapp.com>
Fri, 1 Mar 2013 01:30:10 +0000 (20:30 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 1 Mar 2013 01:41:35 +0000 (17:41 -0800)
commitfe54a72af730bbf565ff0804877341dae3044cf8
treead75f7487669d2977fa1fcb0b45de533c35f29e2
parent180405828bb18e17262eca1f199ba3fc041977fb
NFSv4.1: LAYOUTGET EDELAY loops timeout to the MDS

The client will currently try LAYOUTGETs forever if a server is returning
NFS4ERR_LAYOUTTRYLATER or NFS4ERR_RECALLCONFLICT - even if the client no
longer needs the layout (ie process killed, unmounted).

This patch uses the DS timeout value (module parameter 'dataserver_timeo'
via rpc layer) to set an upper limit of how long the client tries LATOUTGETs
in this situation.  Once the timeout is reached, IO is redirected to the MDS.

This also changes how the client checks if a layout is on the clp list
to avoid a double list_add.

Signed-off-by: Weston Andros Adamson <dros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4proc.c
fs/nfs/pnfs.c
include/linux/nfs_xdr.h