NFS: nfs_readdir_search_for_cookie() don't mark as eof if cookie not found
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 7 Dec 2010 17:41:58 +0000 (12:41 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 7 Dec 2010 17:41:58 +0000 (12:41 -0500)
If we're searching for a specific cookie, and it isn't found in the page
cache, we should try an uncached_readdir(). To do so, we return EBADCOOKIE,
but we don't set desc->eof.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/dir.c

index d529e0e99efa216760c00acde05ca857f207d87a..ad2fde23446d3878a370c5e0508bb514c918d4ec 100644 (file)
@@ -316,8 +316,9 @@ int nfs_readdir_search_for_cookie(struct nfs_cache_array *array, nfs_readdir_des
                }
        }
        if (i == array->eof_index) {
-               desc->eof = 1;
                status = -EBADCOOKIE;
+               if (*desc->dir_cookie == array->last_cookie)
+                       desc->eof = 1;
        }
 out:
        return status;