aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/nfs4proc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index a8be9af610a..ff378126ccd 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -785,6 +785,16 @@ static struct nfs4_state *nfs4_do_open(struct inode *dir, struct dentry *dentry,
785 exception.retry = 1; 785 exception.retry = 1;
786 continue; 786 continue;
787 } 787 }
788 /*
789 * BAD_STATEID on OPEN means that the server cancelled our
790 * state before it received the OPEN_CONFIRM.
791 * Recover by retrying the request as per the discussion
792 * on Page 181 of RFC3530.
793 */
794 if (status == -NFS4ERR_BAD_STATEID) {
795 exception.retry = 1;
796 continue;
797 }
788 res = ERR_PTR(nfs4_handle_exception(NFS_SERVER(dir), 798 res = ERR_PTR(nfs4_handle_exception(NFS_SERVER(dir),
789 status, &exception)); 799 status, &exception));
790 } while (exception.retry); 800 } while (exception.retry);