Revision 64165b1affc5bc16231ac971e66aae7d68d57f2c authored by Hugh Dickins on 19 April 2019, 00:50:09 UTC, committed by Linus Torvalds on 19 April 2019, 16:46:04 UTC
The old try_to_unuse() implementation was driven by find_next_to_unuse(),
which terminated as soon as all the swap had been freed.

Add inuse_pages checks now (alongside signal_pending()) to stop scanning
mms and swap_map once finished.

The same ought to be done in shmem_unuse() too, but never was before,
and needs a different interface: so leave it as is for now.

Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1904081258200.1523@eggly.anvils
Fixes: b56a2d8af914 ("mm: rid swapoff of quadratic complexity")
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Kelley Nielsen <kelleynnn@gmail.com>
Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Cc: Rik van Riel <riel@surriel.com>
Cc: Vineeth Pillai <vpillai@digitalocean.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent dd862de
History
File Mode Size
blocklayout
filelayout
flexfilelayout
Kconfig -rw-r--r-- 5.8 KB
Makefile -rw-r--r-- 1.3 KB
cache_lib.c -rw-r--r-- 3.8 KB
cache_lib.h -rw-r--r-- 1.0 KB
callback.c -rw-r--r-- 11.1 KB
callback.h -rw-r--r-- 5.3 KB
callback_proc.c -rw-r--r-- 18.8 KB
callback_xdr.c -rw-r--r-- 26.9 KB
client.c -rw-r--r-- 32.7 KB
delegation.c -rw-r--r-- 32.5 KB
delegation.h -rw-r--r-- 3.2 KB
dir.c -rw-r--r-- 68.0 KB
direct.c -rw-r--r-- 28.9 KB
dns_resolve.c -rw-r--r-- 10.2 KB
dns_resolve.h -rw-r--r-- 851 bytes
export.c -rw-r--r-- 4.1 KB
file.c -rw-r--r-- 22.3 KB
fscache-index.c -rw-r--r-- 4.1 KB
fscache.c -rw-r--r-- 14.1 KB
fscache.h -rw-r--r-- 6.9 KB
getroot.c -rw-r--r-- 3.5 KB
inode.c -rw-r--r-- 61.7 KB
internal.h -rw-r--r-- 24.2 KB
io.c -rw-r--r-- 4.1 KB
iostat.h -rw-r--r-- 1.8 KB
mount_clnt.c -rw-r--r-- 12.4 KB
namespace.c -rw-r--r-- 6.9 KB
netns.h -rw-r--r-- 942 bytes
nfs.h -rw-r--r-- 1.0 KB
nfs2super.c -rw-r--r-- 569 bytes
nfs2xdr.c -rw-r--r-- 25.3 KB
nfs3_fs.h -rw-r--r-- 1.1 KB
nfs3acl.c -rw-r--r-- 7.9 KB
nfs3client.c -rw-r--r-- 3.1 KB
nfs3proc.c -rw-r--r-- 24.9 KB
nfs3super.c -rw-r--r-- 649 bytes
nfs3xdr.c -rw-r--r-- 54.1 KB
nfs42.h -rw-r--r-- 968 bytes
nfs42proc.c -rw-r--r-- 23.9 KB
nfs42xdr.c -rw-r--r-- 20.7 KB
nfs4_fs.h -rw-r--r-- 20.1 KB
nfs4client.c -rw-r--r-- 32.4 KB
nfs4file.c -rw-r--r-- 6.4 KB
nfs4getroot.c -rw-r--r-- 1011 bytes
nfs4idmap.c -rw-r--r-- 19.5 KB
nfs4idmap.h -rw-r--r-- 2.7 KB
nfs4namespace.c -rw-r--r-- 12.7 KB
nfs4proc.c -rw-r--r-- 263.4 KB
nfs4renewd.c -rw-r--r-- 4.7 KB
nfs4session.c -rw-r--r-- 16.7 KB
nfs4session.h -rw-r--r-- 5.2 KB
nfs4state.c -rw-r--r-- 68.2 KB
nfs4super.c -rw-r--r-- 8.7 KB
nfs4sysctl.c -rw-r--r-- 1.4 KB
nfs4trace.c -rw-r--r-- 471 bytes
nfs4trace.h -rw-r--r-- 49.5 KB
nfs4xdr.c -rw-r--r-- 197.7 KB
nfsroot.c -rw-r--r-- 9.5 KB
nfstrace.c -rw-r--r-- 374 bytes
nfstrace.h -rw-r--r-- 26.1 KB
pagelist.c -rw-r--r-- 33.7 KB
pnfs.c -rw-r--r-- 80.7 KB
pnfs.h -rw-r--r-- 24.7 KB
pnfs_dev.c -rw-r--r-- 9.9 KB
pnfs_nfs.c -rw-r--r-- 23.5 KB
proc.c -rw-r--r-- 18.8 KB
read.c -rw-r--r-- 11.6 KB
super.c -rw-r--r-- 75.8 KB
symlink.c -rw-r--r-- 1.8 KB
sysctl.c -rw-r--r-- 1.3 KB
unlink.c -rw-r--r-- 14.1 KB
write.c -rw-r--r-- 57.1 KB

back to top