Hi Trond, these look great!
I'm doing some comparison testing before/after this set, and I'm getting
into some memory pressure on a client with 4G ram listing 1.5M dentries
with
12 char filenames.
It looks like before this set, the readdir code was a bit more resilient
in
the face of memory pressure, and I'm wondering if we've dropped a call
to
mark_page_accessed().
* Ben adds:
@@ -460,7 +461,8 @@ static int nfs_readdir_search_array(struct
nfs_readdir_descriptor *desc)
desc->last_cookie = array->last_cookie;
desc->current_index += array->size;
desc->page_index++;
- }
+ } else
+ mark_page_accessed(desc->page);
kunmap_atomic(array);
return status;
}
.. no, that's not any better. I'm still getting evicted pages (or, at
least, low-indexed pages that don't have PageUptodate() set), which
makes
it nearly impossible to finish listing this directory because we just
keep
invalidating the mapping.
Any ideas? I'll keep looking.
Ben