kernel-hacking-2024-linux-s.../fs/nfs
Mel Gorman 29418aa4bd nfs: disable data cache revalidation for swapfiles
The VM does not like PG_private set on PG_swapcache pages.  As suggested
by Trond in http://lkml.org/lkml/2006/8/25/348, this patch disables NFS
data cache revalidation on swap files.  as it does not make sense to have
other clients change the file while it is being used as swap.  This avoids
setting PG_private on swap pages, since there ought to be no further races
with invalidate_inode_pages2() to deal with.

Since we cannot set PG_private we cannot use page->private which is
already used by PG_swapcache pages to store the nfs_page.  Thus augment
the new nfs_page_find_request logic.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Mel Gorman <mgorman@suse.de>
Acked-by: Rik van Riel <riel@redhat.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Eric B Munson <emunson@mgebm.net>
Cc: Eric Paris <eparis@redhat.com>
Cc: James Morris <jmorris@namei.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Mike Christie <michaelc@cs.wisc.edu>
Cc: Neil Brown <neilb@suse.de>
Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Xiaotian Feng <dfeng@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-31 18:42:47 -07:00
..
blocklayout NFS: Use proper naming conventions for the nfs_client.net field 2012-05-22 16:45:44 -04:00
objlayout pnfs-obj: Fix __r4w_get_page when offset is beyond i_size 2012-07-20 11:50:31 +03:00
cache_lib.c
cache_lib.h
callback.c NFS: hard-code init_net for NFS callback transports 2012-06-14 13:53:43 -04:00
callback.h
callback_proc.c
callback_xdr.c NFS: add an endian notation for sparse 2012-06-12 09:54:40 -04:00
client.c NFS: Split out NFS v4 client functions 2012-07-17 13:33:56 -04:00
delegation.c NFS: Create a return_delegation rpc op 2012-06-29 11:46:45 -04:00
delegation.h NFS: Create a return_delegation rpc op 2012-06-29 11:46:45 -04:00
dir.c NFS: Split out NFS v4 inode operations 2012-07-17 13:33:05 -04:00
direct.c NFS: fix pnfs regression with directio writes 2012-07-30 18:09:06 -04:00
dns_resolve.c
dns_resolve.h
file.c nfs: teach the NFS client how to treat PG_swapcache pages 2012-07-31 18:42:47 -07:00
fscache-index.c
fscache.c NFS: Don't pass mount data to nfs_fscache_get_super_cookie() 2012-05-14 17:30:26 -07:00
fscache.h NFS: Fix a compile issue when CONFIG_NFS_FSCACHE was undefined 2012-05-16 10:24:20 -07:00
getroot.c NFS: Move the v4 getroot code to nfs4getroot.c 2012-07-17 13:33:51 -04:00
idmap.c NFS: Force the legacy idmapper to be single threaded 2012-06-20 14:38:11 -04:00
inode.c nfs: disable data cache revalidation for swapfiles 2012-07-31 18:42:47 -07:00
internal.h nfs: teach the NFS client how to treat PG_swapcache pages 2012-07-31 18:42:47 -07:00
iostat.h
Kconfig NFS: Simplify NFSv4.1 Kconfig 2012-06-28 17:20:51 -04:00
Makefile NFS: Initialize the NFS v4 client from init_nfs_v4() 2012-07-17 13:33:52 -04:00
mount_clnt.c
namespace.c
netns.h NFS: Always use the same SETCLIENTID boot verifier 2012-05-22 16:45:46 -04:00
nfs2xdr.c NFS: Let xdr_read_pages() check for buffer overflows 2012-06-28 17:20:43 -04:00
nfs3acl.c
nfs3proc.c NFS: Split out NFS v3 inode operations 2012-07-17 13:33:03 -04:00
nfs3xdr.c NFS: Cleanup - only store the write verifier in struct nfs_page 2012-06-28 17:20:50 -04:00
nfs4_fs.h nfs: fix stub return type warnings 2012-07-30 17:30:24 -04:00
nfs4client.c NFS: Split out NFS v4 client functions 2012-07-17 13:33:56 -04:00
nfs4file.c NFS: Split out NFS v4 file operations 2012-07-17 13:33:50 -04:00
nfs4filelayout.c NFSv4.1 don't send LAYOUTCOMMIT if data resent through MDS 2012-07-16 14:37:00 -04:00
nfs4filelayout.h NFSv4.1 resend LAYOUTGET on data server invalid layout errors 2012-05-19 17:55:33 -04:00
nfs4filelayoutdev.c NFSv4.1: Use session max response size for GETDEVICEINFO gdia_maxcount 2012-06-28 17:20:50 -04:00
nfs4getroot.c NFS: Move the v4 getroot code to nfs4getroot.c 2012-07-17 13:33:51 -04:00
nfs4namespace.c Merge branch 'bugfixes' into nfs-for-next 2012-05-21 10:12:39 -04:00
nfs4proc.c nfs: fix fl_type tests in NFSv4 code 2012-07-30 18:09:13 -04:00
nfs4renewd.c NFS: Add NFSDBG_STATE 2012-05-22 16:45:42 -04:00
nfs4state.c NFS: Clean up nfs4_proc_setclientid() and friends 2012-07-16 15:12:16 -04:00
nfs4super.c NFS: exit_nfs_v4() shouldn't be an __exit function 2012-07-17 17:02:57 -04:00
nfs4sysctl.c NFS: Initialize v4 sysctls from nfs_init_v4() 2012-07-17 13:33:18 -04:00
nfs4xdr.c nfs: fix fl_type tests in NFSv4 code 2012-07-30 18:09:13 -04:00
nfsroot.c
pagelist.c nfs: teach the NFS client how to treat PG_swapcache pages 2012-07-31 18:42:47 -07:00
pnfs.c NFSv4.1 do not send LAYOUTRETURN on emtpy plh_segs list 2012-07-16 14:39:00 -04:00
pnfs.h NFSv4.1 mark layout when already returned 2012-07-16 14:37:25 -04:00
pnfs_dev.c
proc.c NFS: Split out NFS v2 inode operations 2012-07-17 13:32:55 -04:00
read.c nfs: teach the NFS client how to treat PG_swapcache pages 2012-07-31 18:42:47 -07:00
super.c NFS: Split out the NFS v4 filesystem types 2012-07-17 13:33:55 -04:00
symlink.c
sysctl.c NFS: Initialize v4 sysctls from nfs_init_v4() 2012-07-17 13:33:18 -04:00
unlink.c NFS: Create a return_delegation rpc op 2012-06-29 11:46:45 -04:00
write.c nfs: disable data cache revalidation for swapfiles 2012-07-31 18:42:47 -07:00