diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-07-30 12:45:35 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-07-30 14:34:50 -0400 |
commit | 0c0308066ca53fdf1423895f3a42838b67b3a5a8 (patch) | |
tree | 4c6f0d852456581a7ca17286601d18d7bb030632 /include/linux/nfs_fs.h | |
parent | ed1e6211a0a134ff23592c6f057af982ad5dab52 (diff) | |
download | linux-stable-0c0308066ca53fdf1423895f3a42838b67b3a5a8.tar.gz linux-stable-0c0308066ca53fdf1423895f3a42838b67b3a5a8.tar.bz2 linux-stable-0c0308066ca53fdf1423895f3a42838b67b3a5a8.zip |
NFS: Fix spurious readdir cookie loop messages
If the directory contents change, then we have to accept that the
file->f_pos value may shrink if we do a 'search-by-cookie'. In that
case, we should turn off the loop detection and let the NFS client
try to recover.
The patch also fixes a second loop detection bug by ensuring
that after turning on the ctx->duped flag, we read at least one new
cookie into ctx->dir_cookie before attempting to match with
ctx->dup_cookie.
Reported-by: Petr Vandrovec <petr@vandrovec.name>
Cc: stable@kernel.org [2.6.39+]
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/nfs_fs.h')
-rw-r--r-- | include/linux/nfs_fs.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 8b579beb6358..b96fb99072ff 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -99,9 +99,10 @@ struct nfs_open_context { struct nfs_open_dir_context { struct rpc_cred *cred; + unsigned long attr_gencount; __u64 dir_cookie; __u64 dup_cookie; - int duped; + signed char duped; }; /* |