diff options
author | Weston Andros Adamson <dros@netapp.com> | 2013-02-28 20:30:10 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-02-28 17:41:35 -0800 |
commit | 3000512137602b84d1ad5fd89d62984993a19bb6 (patch) | |
tree | ad75f7487669d2977fa1fcb0b45de533c35f29e2 /include | |
parent | edddbb1eda61753c886a3c5e159293a7b3a9e30a (diff) | |
download | linux-stable-3000512137602b84d1ad5fd89d62984993a19bb6.tar.gz linux-stable-3000512137602b84d1ad5fd89d62984993a19bb6.tar.bz2 linux-stable-3000512137602b84d1ad5fd89d62984993a19bb6.zip |
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>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nfs_xdr.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 29adb12c7ecf..2250cab6fc4b 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -233,6 +233,7 @@ struct nfs4_layoutget_args { struct inode *inode; struct nfs_open_context *ctx; nfs4_stateid stateid; + unsigned long timestamp; struct nfs4_layoutdriver_data layout; }; |