1
linux/fs
Johannes Weiner 91b0abe36a mm + fs: store shadow entries in page cache
Reclaim will be leaving shadow entries in the page cache radix tree upon
evicting the real page.  As those pages are found from the LRU, an
iput() can lead to the inode being freed concurrently.  At this point,
reclaim must no longer install shadow pages because the inode freeing
code needs to ensure the page tree is really empty.

Add an address_space flag, AS_EXITING, that the inode freeing code sets
under the tree lock before doing the final truncate.  Reclaim will check
for this flag before installing shadow pages.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Rik van Riel <riel@redhat.com>
Reviewed-by: Minchan Kim <minchan@kernel.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Bob Liu <bob.liu@oracle.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Jan Kara <jack@suse.cz>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Luigi Semenzato <semenzato@google.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Metin Doslu <metin@citusdata.com>
Cc: Michel Lespinasse <walken@google.com>
Cc: Ozgun Erdogan <ozgun@citusdata.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Roman Gushchin <klamm@yandex-team.ru>
Cc: Ryan Mallon <rmallon@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-04-03 16:21:01 -07:00
..
9p mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
adfs
affs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
afs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
autofs4
befs
bfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
btrfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
cachefiles fs: cachefiles: use add_to_page_cache_lru() 2014-04-03 16:21:00 -07:00
ceph ceph: fix __dcache_readdir() 2014-02-17 12:37:13 -08:00
cifs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
coda mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
configfs
cramfs
debugfs treewide: Fix typo in Documentation/DocBook 2014-02-19 14:58:17 +01:00
devpts
dlm
ecryptfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
efivarfs efivarfs: 'efivarfs_file_write' function reorganization 2014-03-04 16:16:16 +00:00
efs
exofs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
exportfs
ext2 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
ext3 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
ext4 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
f2fs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
fat mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
freevxfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
fscache FS-Cache: Handle removal of unadded object to the fscache_object_list rb tree 2014-02-17 13:47:35 -08:00
fuse mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
gfs2 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
hfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
hfsplus mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
hostfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
hpfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
hppfs
hugetlbfs mm, hugetlb: unify region structure handling 2014-04-03 16:20:59 -07:00
isofs
jbd
jbd2 jbd2: fix use after free in jbd2_journal_start_reserved() 2014-02-17 20:33:01 -05:00
jffs2 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
jfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
kernfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
lockd lockd: send correct lock when granting a delayed lock. 2014-02-13 14:55:02 -05:00
logfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
minix mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
ncpfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
nfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
nfs_common
nfsd nfsd: fix lost nfserrno() call in nfsd_setattr() 2014-02-18 12:25:57 -05:00
nilfs2 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
nls
notify fanotify: move unrelated handling from copy_event_to_user() 2014-04-03 16:20:51 -07:00
ntfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
ocfs2 mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
omfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
openpromfs
proc mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
pstore
qnx4
qnx6
quota quota: provide function to grab quota structure reference 2014-04-03 16:20:54 -07:00
ramfs
reiserfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
romfs
squashfs
sysfs Revert "sysfs, driver-core: remove unused {sysfs|device}_schedule_callback_owner()" 2014-03-25 20:54:57 -07:00
sysv mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
ubifs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
udf mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
ufs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
xfs mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
aio.c
anon_inodes.c vfs: Allocate anon_inode_inode in anon_inode_init() 2014-03-27 09:52:54 -07:00
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c Merge branch 'for-3.15/core' of git://git.kernel.dk/linux-block 2014-04-01 19:19:15 -07:00
bio.c bio: don't write "bio: create slab" messages to syslog 2014-02-18 12:17:47 -08:00
block_dev.c mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
buffer.c Merge branch 'master' into for-next 2014-02-20 14:54:28 +01:00
char_dev.c
compat_binfmt_elf.c binfmt_elf: add ELF_HWCAP2 to compat auxv entries 2014-03-04 08:05:21 +00:00
compat_ioctl.c fs/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types 2014-03-06 16:30:44 +01:00
compat.c Merge branch 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-04-02 12:51:41 -07:00
coredump.c
dcache.c make prepend_name() work correctly when called with negative *buflen 2014-03-23 00:28:40 -04:00
dcookies.c fs/compat: fix lookup_dcookie() parameter handling 2014-01-29 16:22:40 -08:00
direct-io.c fs/direct-io.c: remove redundant comparison 2014-04-03 16:20:57 -07:00
drop_caches.c
eventfd.c
eventpoll.c
exec.c fs/compat: convert to COMPAT_SYSCALL_DEFINE 2014-03-06 16:30:43 +01:00
fcntl.c
fhandle.c
file_table.c vfs: atomic f_pos accesses as per POSIX 2014-03-10 11:44:41 -04:00
file.c Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-03-31 11:05:24 -07:00
filesystems.c
fs_struct.c
fs-writeback.c bdi: avoid oops on device removal 2014-04-03 16:20:49 -07:00
inode.c mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
internal.h
ioctl.c
ioprio.c
Kconfig kernfs: add CONFIG_KERNFS 2014-02-07 16:08:57 -08:00
Kconfig.binfmt
libfs.c
locks.c
Makefile kernfs: add CONFIG_KERNFS 2014-02-07 16:08:57 -08:00
mbcache.c
mount.h switch mnt_hash to hlist 2014-03-30 19:18:51 -04:00
mpage.c
namei.c rcuwalk: recheck mount_lock after mountpoint crossing attempts 2014-03-23 00:32:55 -04:00
namespace.c switch mnt_hash to hlist 2014-03-30 19:18:51 -04:00
no-block.c
open.c vfs: atomic f_pos accesses as per POSIX 2014-03-10 11:44:41 -04:00
pipe.c
pnode.c switch mnt_hash to hlist 2014-03-30 19:18:51 -04:00
pnode.h switch mnt_hash to hlist 2014-03-30 19:18:51 -04:00
posix_acl.c fs: get_acl() must be allowed to return EOPNOTSUPP 2014-02-03 17:12:37 -05:00
proc_namespace.c
read_write.c Merge branch 'compat' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-03-31 14:32:17 -07:00
readdir.c
select.c
seq_file.c
signalfd.c
splice.c
stack.c
stat.c
statfs.c
super.c fs/super.c: sync ro remount after blocking writers 2014-01-31 14:29:36 -05:00
sync.c Revert "writeback: do not sync data dirtied after sync start" 2014-02-22 02:02:28 +01:00
timerfd.c
utimes.c
xattr.c