linux/fs
Vlastimil Babka 0ca673b38f UPSTREAM: dcache: allocate external names from reclaimable kmalloc caches
We can use the newly introduced kmalloc-reclaimable-X caches, to allocate
external names in dcache, which will take care of the proper accounting
automatically, and also improve anti-fragmentation page grouping.

This effectively reverts commit f1782c9bc5 ("dcache: account external
names as indirectly reclaimable memory") and instead passes
__GFP_RECLAIMABLE to kmalloc().  The accounting thus moves from
NR_INDIRECTLY_RECLAIMABLE_BYTES to NR_SLAB_RECLAIMABLE, which is also
considered in MemAvailable calculation and overcommit decisions.

Link: http://lkml.kernel.org/r/20180731090649.16028-4-vbabka@suse.cz
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Roman Gushchin <guro@fb.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: Vijayanand Jitta <vjitta@codeaurora.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 2e03b4bc4a)

Bug: 138148041
Test: verify KReclaimable accounting after ION allocation+deallocation
Change-Id: I7db8f9d202aed82dafa28b82ed6615927a63558d
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-12-13 14:04:22 -08:00
..
9p 9p: avoid attaching writeback_fid on mmap with type PRIVATE 2019-10-11 18:21:13 +02:00
adfs fs/adfs: super: fix use-after-free bug 2019-08-06 19:06:49 +02:00
affs affs: fix potential memory leak when parsing option 'prefix' 2018-05-28 12:36:41 +02:00
afs afs: Fix leak in afs_lookup_cell_rcu() 2019-09-10 10:33:52 +01:00
autofs autofs: fix a leak in autofs_expire_indirect() 2019-12-13 08:51:01 +01:00
befs fix a series of Documentation/ broken file name references 2018-06-15 18:10:01 -03:00
bfs bfs: add sanity check at bfs_fill_super() 2018-12-01 09:37:27 +01:00
btrfs btrfs: only track ref_heads in delayed_ref_updates 2019-12-05 09:20:23 +01:00
cachefiles fscache, cachefiles: remove redundant variable 'cache' 2018-12-17 09:24:40 +01:00
ceph ceph: return -EINVAL if given fsc mount option on kernel w/o support 2019-12-05 09:19:45 +01:00
cifs CIFS: Fix SMB2 oplock break processing 2019-12-13 08:52:42 +01:00
coda coda: add error handling for fget 2019-08-06 19:06:51 +02:00
configfs configfs: fix a deadlock in configfs_symlink() 2019-11-12 19:20:47 +01:00
cramfs Cramfs: fix abad comparison when wrap-arounds occur 2018-11-13 11:08:55 -08:00
crypto BACKPORT: FROMLIST: fscrypt: add inline encryption support 2019-11-14 14:47:50 -08:00
debugfs debugfs: fix use-after-free on symlink traversal 2019-05-08 07:21:48 +02:00
devpts fs/devpts: always delete dcache dentry-s in dput() 2019-03-23 20:09:59 +01:00
dlm dlm: fix invalid cluster name warning 2019-12-13 08:52:23 +01:00
ecryptfs ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either 2019-11-20 18:45:18 +01:00
efivarfs efivars: Call guid_parse() against guid_t type of variable 2018-07-22 14:13:44 +02:00
efs
exofs exofs_mount(): fix leaks on failure exits 2019-12-05 09:20:32 +01:00
exportfs exportfs_decode_fh(): negative pinned may become positive without the parent locked 2019-12-13 08:51:02 +01:00
ext2 ext2: Fix underflow in ext2_max_size() 2019-03-23 20:10:03 +01:00
ext4 This is the 4.19.88 stable release 2019-12-05 12:02:49 +01:00
f2fs f2fs: fix to allow node segment for GC by ioctl path 2019-12-13 08:51:51 +01:00
fat fat: work around race with userspace's read via blockdev while mounting 2019-10-07 18:57:14 +02:00
freevxfs freevxfs_lookup(): use d_splice_alias() 2018-05-22 14:27:51 -04:00
fscache fscache: fix race between enablement and dropping of object 2018-12-17 09:24:40 +01:00
fuse fuse: verify attributes 2019-12-13 08:52:36 +01:00
gfs2 gfs2: take jdata unstuff into account in do_grow 2019-12-05 09:20:36 +01:00
hfs fs/hfs/extent.c: fix array out of bounds read of array extent 2019-12-01 09:17:10 +01:00
hfsplus hfsplus: update timestamps on truncate() 2019-12-01 09:17:09 +01:00
hostfs vfs: discard ATTR_ATTR_FLAG 2018-08-17 16:20:28 -07:00
hpfs hpfs: remove unnecessary checks on the value of r when assigning error code 2018-08-25 12:42:33 -07:00
hugetlbfs This is the 4.19.45 stable release 2019-05-22 08:00:39 +02:00
isofs isofs: reject hardware sector size > 2048 bytes 2018-08-21 11:37:41 +02:00
jbd2 jbd2: introduce jbd2_inode dirty range scoping 2019-07-28 08:29:29 +02:00
jffs2 FROMLIST: jffs2: pass the correct prototype to read_cache_page 2019-05-20 17:46:45 -07:00
jfs Just one jfs patch for 4.19 2018-08-15 22:47:23 -07:00
kernfs This is the 4.19.89 stable release 2019-12-13 10:01:10 +01:00
lockd lockd: fix decoding of TEST results 2019-12-13 08:51:59 +01:00
minix minix_lookup: use d_splice_alias() 2018-05-22 14:27:52 -04:00
nfs This is the 4.19.86 stable release 2019-11-25 10:00:06 +01:00
nfs_common
nfsd nfsd: Return EPERM, not EACCES, in some SETATTR cases 2019-12-13 08:52:26 +01:00
nilfs2 nilfs2: convert to SPDX license tags 2018-09-04 16:45:02 -07:00
nls
notify UPSTREAM: Make anon_inodes unconditional 2019-08-12 13:36:37 -04:00
ntfs ntfs: mft: remove VLA usage 2018-08-17 16:20:27 -07:00
ocfs2 ocfs2: clear journal dirty flag after shutdown journal 2019-12-05 09:20:56 +01:00
omfs omfs_lookup(): report IO errors, use d_splice_alias() 2018-05-22 14:27:58 -04:00
openpromfs openpromfs: switch to d_splice_alias() 2018-05-22 14:27:57 -04:00
orangefs orangefs: rate limit the client not running info message 2019-11-24 08:20:57 +01:00
overlayfs ANDROID: regression introduced override_creds=off 2019-11-06 15:30:32 +00:00
proc FROMLIST: scs: add accounting 2019-11-27 12:37:25 -08:00
pstore pstore/ram: Avoid NULL deref in ftrace merging failure path 2019-12-13 08:52:24 +01:00
qnx4 qnx4_lookup: use d_splice_alias() 2018-05-22 14:27:52 -04:00
qnx6 qnx6_lookup: switch to d_splice_alias() 2018-05-22 14:27:54 -04:00
quota quota: fix a problem about transfer quota 2019-07-14 08:11:15 +02:00
ramfs
reiserfs reiserfs: propagate errors from fill_with_dentries() properly 2018-11-27 16:12:59 +01:00
romfs romfs_lookup: switch to d_splice_alias() 2018-05-22 14:27:55 -04:00
sdcardfs ANDROID: sdcardfs: evict dentries on fscrypt key removal 2019-10-23 11:12:33 -07:00
squashfs Squashfs: Compute expected length from inode size rather than block length 2018-08-02 09:34:02 -07:00
sysfs Driver core patches for 4.19-rc1 2018-08-18 11:44:53 -07:00
sysv sysv: return 'err' instead of 0 in __sysv_write_inode 2018-12-17 09:24:30 +01:00
tracefs tracefs: Annotate tracefs_ops with __ro_after_init 2018-07-31 11:32:44 -04:00
ubifs This is the 4.19.88 stable release 2019-12-05 12:02:49 +01:00
udf udf: Fix crash during mount 2019-11-20 18:46:04 +01:00
ufs ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour 2019-05-25 18:23:46 +02:00
unicode ext4: optimize case-insensitive lookups 2019-09-23 13:23:30 -07:00
verity fs-verity: support builtin file signatures 2019-09-23 14:11:56 -07:00
xfs xfs: add missing error check in xfs_prepare_shift() 2019-12-13 08:52:57 +01:00
aio.c Fix aio_poll() races 2019-05-02 09:58:59 +02:00
anon_inodes.c anon_inode_getfile(): switch to alloc_file_pseudo() 2018-07-12 10:04:27 -04:00
attr.c ANDROID: vfs: Add permission2 for filesystems with per mount permissions 2018-12-05 09:48:14 -08:00
bad_inode.c get rid of 'opened' argument of ->atomic_open() - part 3 2018-07-12 10:04:20 -04:00
binfmt_aout.c
binfmt_elf_fdpic.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
binfmt_elf.c binfmt_elf: Do not move brk for INTERP-less ET_EXEC 2019-10-05 13:10:06 +02:00
binfmt_em86.c
binfmt_flat.c fs/binfmt_flat.c: make load_flat_shared_library() work 2019-07-03 13:14:44 +02:00
binfmt_misc.c turn filp_clone_open() into inline wrapper for dentry_open() 2018-07-10 23:29:03 -04:00
binfmt_script.c exec: load_script: Do not exec truncated interpreter path 2019-11-06 13:05:37 +01:00
block_dev.c block: fix the return errno for direct IO 2019-04-17 08:38:52 +02:00
buffer.c BACKPORT: FROMLIST: ext4: add inline encryption support 2019-11-14 14:47:50 -08:00
char_dev.c chardev: add additional check for minor range overlap 2019-05-31 06:46:27 -07:00
compat_binfmt_elf.c
compat_ioctl.c media: dvb: fix compat ioctl translation 2019-11-20 18:46:33 +01:00
compat.c ncpfs: remove compat functionality 2018-06-05 19:23:26 +02:00
coredump.c ANDROID: vfs: Add setattr2 for filesystems with per mount permissions 2018-12-05 09:48:13 -08:00
d_path.c
dax.c dax: dax_layout_busy_page() should not unmap cow pages 2019-08-16 10:12:52 +02:00
dcache.c UPSTREAM: dcache: allocate external names from reclaimable kmalloc caches 2019-12-13 14:04:22 -08:00
dcookies.c
direct-io.c direct-io: allow direct writes to empty inodes 2019-03-05 17:58:50 +01:00
drop_caches.c fs/drop_caches.c: avoid softlockups in drop_pagecache_sb() 2019-03-13 14:02:32 -07:00
eventfd.c Revert changes to convert to ->poll_mask() and aio IOCB_CMD_POLL 2018-06-28 10:40:47 -07:00
eventpoll.c UPSTREAM: PM / wakeup: Show wakeup sources stats in sysfs 2019-10-11 14:04:42 -07:00
exec.c This is the 4.19.64 stable release 2019-08-04 09:37:11 +02:00
fcntl.c signal: Don't send signals to tasks that don't exist 2018-08-15 23:03:20 -05:00
fhandle.c
file_table.c overlayfs update for 4.19 2018-08-21 18:19:09 -07:00
file.c fs/file.c: initialize init_files.resize_wait 2019-04-05 22:32:59 +02:00
filesystems.c proc: introduce proc_create_single{,_data} 2018-05-16 07:23:35 +02:00
fs_pin.c
fs_struct.c ANDROID: properly export new symbols with _GPL tag 2019-10-01 09:41:17 +02:00
fs-writeback.c cgroup,writeback: don't switch wbs immediately on dead wbs if the memcg is dead 2019-11-12 19:21:20 +01:00
inode.c Merge remote-tracking branch 'origin/upstream-f2fs-stable-linux-4.19.y' into android-4.19 2019-07-31 21:34:30 -07:00
internal.h This is the 4.19.47 stable release 2019-05-31 08:14:29 -07:00
ioctl.c vfs: fix FIGETBSZ ioctl on an overlayfs file 2018-11-21 09:19:14 +01:00
iomap.c iomap: partially revert 4721a60109 (simulated directio short read on EFAULT) 2019-12-13 08:52:56 +01:00
Kconfig Merge remote-tracking branch 'aosp/upstream-f2fs-stable-linux-4.19.y' into android-4.19 2019-10-07 13:29:05 -07:00
Kconfig.binfmt kconfig: move the "Executable file formats" menu to fs/Kconfig.binfmt 2018-08-02 08:06:55 +09:00
libfs.c Fix the locking in dcache_readdir() and friends 2019-10-17 13:45:35 -07:00
locks.c overlayfs update for 4.19 2018-08-21 18:19:09 -07:00
Makefile Merge remote-tracking branch 'aosp/upstream-f2fs-stable-linux-4.19.y' into android-4.19 2019-10-07 13:29:05 -07:00
mbcache.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
mount.h
mpage.c f2fs: fix build error on android tracepoints 2019-08-17 00:18:14 +00:00
namei.c ANDROID: Add a tracepoint for mapping inode to full path 2019-08-27 21:50:14 +00:00
namespace.c UPSTREAM: fs/namespace: untag user pointers in copy_mount_options 2019-10-07 15:27:40 -04:00
no-block.c
nsfs.c dcache: sort the freeing-without-RCU-delay mess for good. 2019-05-25 18:23:26 +02:00
open.c This is the 4.19.63 stable release 2019-07-31 08:03:42 +02:00
pipe.c fs: prevent page refcount overflow in pipe_buf_get 2019-05-04 09:20:11 +02:00
pnode.c ANDROID: mnt: Propagate remount correctly 2019-01-19 01:25:07 +00:00
pnode.h ANDROID: mnt: Add filesystem private data to mount points 2018-12-05 09:48:13 -08:00
posix_acl.c
proc_namespace.c ANDROID: vfs: Allow filesystems to access their private mount data 2018-12-05 09:48:13 -08:00
read_write.c This is the 4.19.87 stable release 2019-12-01 09:53:43 +01:00
readdir.c
select.c Revert changes to convert to ->poll_mask() and aio IOCB_CMD_POLL 2018-06-28 10:40:47 -07:00
seq_file.c seq_file: fix problem when seeking mid-record 2019-08-25 10:47:43 +02:00
signalfd.c Merge branch 'work.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-06-16 16:21:50 +09:00
splice.c splice: don't read more than available pipe space 2019-12-13 08:52:55 +01:00
stack.c
stat.c
statfs.c vfs: Fix EOVERFLOW testing in put_compat_statfs64 2019-10-11 18:21:39 +02:00
super.c Merge remote-tracking branch 'aosp/upstream-f2fs-stable-linux-4.19.y' into android-4.19 2019-10-07 13:29:05 -07:00
sync.c ANDROID: taskstats: track fsync syscalls 2018-12-05 09:48:12 -08:00
timerfd.c Merge branch 'work.aio' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-08-13 20:56:23 -07:00
userfaultfd.c UPSTREAM: userfaultfd: untag user pointers 2019-10-07 15:27:41 -04:00
utimes.c ANDROID: vfs: Add setattr2 for filesystems with per mount permissions 2018-12-05 09:48:13 -08:00
xattr.c ANDROID: Add optional __get xattr method paired to __vfs_getxattr 2019-11-06 15:27:46 +00:00