diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-05-30 04:06:08 +0200 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-05-31 21:02:16 +0200 |
commit | cf61eb268678c83eef812f937a3a9aeee67c460b (patch) | |
tree | 3f0f6ef3efddddf1a3f71795ee9b90a3801f6098 /fs/nfs/nfs42proc.c | |
parent | NFSv4: Fix possible 1-byte stack overflow in nfs_idmap_read_and_verify_message (diff) | |
download | linux-cf61eb268678c83eef812f937a3a9aeee67c460b.tar.xz linux-cf61eb268678c83eef812f937a3a9aeee67c460b.zip |
NFSv4: Always clear the pNFS layout when handling ESTALE
If we get an ESTALE error in response to an RPC call operating on the
file on the MDS, we should immediately cancel the layout for that file.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'fs/nfs/nfs42proc.c')
-rw-r--r-- | fs/nfs/nfs42proc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c index 4d4a3df28779..5f59b6f65a42 100644 --- a/fs/nfs/nfs42proc.c +++ b/fs/nfs/nfs42proc.c @@ -370,6 +370,10 @@ nfs42_layoutstat_done(struct rpc_task *task, void *calldata) switch (task->tk_status) { case 0: break; + case -NFS4ERR_BADHANDLE: + case -ESTALE: + pnfs_destroy_layout(NFS_I(inode)); + break; case -NFS4ERR_EXPIRED: case -NFS4ERR_ADMIN_REVOKED: case -NFS4ERR_DELEG_REVOKED: |