Messages in this thread | | | From | Trond Myklebust <> | Subject | [PATCH v4 0/3] Fix more NFS readdir regressions | Date | Mon, 6 Dec 2010 11:59:05 -0500 |
| |
> OK. The first patch in this series fixes the regression reported by > Nick Bowler when I apply it to my setup.
> The 2 remaining patches are needed in order to ensure that the > VM doesn't free the readdir page cache page while we're trying to > read from it, and to ensure that we don't leak memory...
> Linus, please don't apply these patches quite yet. I'd like to continue > tests for a couple more days before I send you the pull request.
v2 fixes the following issues: - Fix up the cookie usage in uncached_readdir() - Changelog fixups for the second patch - .releasepage should use kmap_atomic() so that it can be called from all direct reclaim contexts. - Ensure that .releasepage also clears Pg_uptodate - Set/clear the Pg_private flag to ensure .releasepage gets called when appropriate. - Add a .invalidatepage to ensure truncate_inode_pages() works correctly - Ensure that the anonymous page that is generated by uncached_readdir() doesn't leak memory.
v3: - add the freepage() address space operation. - Dump the page locking - rewrite patch 'Fix a memory leak in nfs_readdir' to work with the new ->freepage() callback.
v4: - Remove the preempt disable/enable protection in __remove_mapping - Add a freepage() call to remove_from_page_cache() instead of open-coding it in truncate_complete_page().
Cheers Trond
Linus Torvalds (1): Call the filesystem back whenever a page is removed from the page cache
Trond Myklebust (2): NFS: Ensure we use the correct cookie in nfs_readdir_xdr_filler NFS: Fix a memory leak in nfs_readdir
Documentation/filesystems/Locking | 7 ++++++- Documentation/filesystems/vfs.txt | 7 +++++++ fs/nfs/dir.c | 28 +++++++++++++++++----------- fs/nfs/inode.c | 1 + include/linux/fs.h | 1 + include/linux/nfs_fs.h | 1 + mm/filemap.c | 5 +++++ mm/truncate.c | 4 ++++ mm/vmscan.c | 7 +++++++ 9 files changed, 49 insertions(+), 12 deletions(-)
-- 1.7.3.2
| |