frontswap: support exclusive gets if tmem backend is capable
Dan Magenheimer authored
Tmem, as originally specified, assumes that "get" operations
performed on persistent pools never flush the page of data out
of tmem on a successful get, waiting instead for a flush
operation.  This is intended to mimic the model of a swap
disk, where a disk read is non-destructive.  Unlike a
disk, however, freeing up the RAM can be valuable.  Over
the years that frontswap was in the review process, several
reviewers (and notably Hugh Dickins in 2010) pointed out that
this would result, at least temporarily, in two copies of the
data in RAM: one (compressed for zcache) copy in tmem,
and one copy in the swap cache.  We wondered if this could
be done differently, at least optionally.

This patch allows tmem backends to instruct the frontswap
code that this backend performs exclusive gets.  Zcache2
already contains hooks to support this feature.  Other
backends are completely unaffected unless/until they are
updated to support this feature.

While i...
e3483a5f
Name Last commit Last update
..
Kconfig mm: factor out memory isolate functions
Kconfig.debug mm: more intensive memory corruption debugging
Makefile mm: factor out memory isolate functions
backing-dev.c mm: prepare for removal of obsolete /proc/sys/vm/nr_pdflush_threads
bootmem.c bootmem: make ___alloc_bootmem_node_nopanic() really nopanic
bounce.c bounce: allow use of bounce pool via config option
cleancache.c ->encode_fh() API change
compaction.c mm: have order > 0 compaction start off where it left
debug-pagealloc.c mm, x86: Remove debug_pagealloc_enabled
dmapool.c mm: fix implicit stat.h usage in dmapool.c
fadvise.c mm, fadvise: don't return -EINVAL when filesystem cannot implement fadvise()
failslab.c switch debugfs to umode_t
filemap.c fs: Protect write paths by sb_start_write - sb_end_write
filemap_xip.c fs: Protect write paths by sb_start_write - sb_end_write
fremap.c mm: delete various needless include <linux/module.h>
frontswap.c frontswap: support exclusive gets if tmem backend is capable
highmem.c mm: add support for direct_IO to highmem pages
huge_memory.c mm/memcg: apply add/del_page to lruvec
hugetlb.c mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables
hugetlb_cgroup.c hugetlb/cgroup: remove exclude and wakeup rmdir calls from migrate
hwpoison-inject.c memcg: rename config variables
init-mm.c atomic: use <linux/atomic.h>
internal.h netvm: allow skb allocation to use PFMEMALLOC reserves
kmemcheck.c kmemcheck: add hooks for the page allocator
kmemleak-test.c kmemleak: remove memset by using kzalloc
kmemleak.c
ksm.c
maccess.c
madvise.c
memblock.c
memcontrol.c
memory-failure.c
memory.c
memory_hotplug.c
mempolicy.c
mempool.c
migrate.c
mincore.c
mlock.c
mm_init.c
mmap.c
mmu_context.c
mmu_notifier.c
mmzone.c
mprotect.c
mremap.c
msync.c
nobootmem.c
nommu.c
oom_kill.c
page-writeback.c
page_alloc.c
page_cgroup.c
page_io.c
page_isolation.c
pagewalk.c
percpu-km.c
percpu-vm.c
percpu.c
pgtable-generic.c
prio_tree.c
process_vm_access.c
quicklist.c
readahead.c
rmap.c
shmem.c
slab.c
slab.h
slab_common.c
slob.c
slub.c
sparse-vmemmap.c
sparse.c
swap.c
swap_state.c
swapfile.c
truncate.c
util.c
vmalloc.c
vmscan.c
vmstat.c