config ZCACHE
	tristate "Dynamic compression of swap pages and clean pagecache pages"
	depends on CRYPTO=y && SWAP=y && CLEANCACHE && FRONTSWAP
	select CRYPTO_LZO
	default n
	help
	  Zcache doubles RAM efficiency while providing a significant
	  performance boosts on many workloads.  Zcache uses
	  compression and an in-kernel implementation of transcendent
	  memory to store clean page cache pages and swap in RAM,
	  providing a noticeable reduction in disk I/O.

config ZCACHE_DEBUG
	bool "Enable debug statistics"
	depends on DEBUG_FS && ZCACHE
	default n
	help
	  This is used to provide an debugfs directory with counters of
	  how zcache is doing. You probably want to set this to 'N'.

config RAMSTER
	tristate "Cross-machine RAM capacity sharing, aka peer-to-peer tmem"
	depends on CONFIGFS_FS=y && SYSFS=y && !HIGHMEM && ZCACHE
	depends on NET
	# must ensure struct page is 8-byte aligned
	select HAVE_ALIGNED_STRUCT_PAGE if !64BIT
	default n
	help
	  RAMster allows RAM on other machines in a cluster to be utilized
	  dynamically and symmetrically instead of swapping to a local swap
	  disk, thus improving performance on memory-constrained workloads
	  while minimizing total RAM across the cluster.  RAMster, like
	  zcache2, compresses swap pages into local RAM, but then remotifies
	  the compressed pages to another node in the RAMster cluster.

config RAMSTER_DEBUG
        bool "Enable ramster debug statistics"
        depends on DEBUG_FS && RAMSTER
        default n
        help
          This is used to provide an debugfs directory with counters of
          how ramster is doing. You probably want to set this to 'N'.

# Depends on not-yet-upstreamed mm patches to export end_swap_bio_write and
# __add_to_swap_cache, and implement __swap_writepage (which is swap_writepage
# without the frontswap call. When these are in-tree, the dependency on
# BROKEN can be removed
config ZCACHE_WRITEBACK
	bool "Allow compressed swap pages to be writtenback to swap disk"
	depends on ZCACHE=y && BROKEN
	default n
	help
	  Zcache caches compressed swap pages (and other data) in RAM which
	  often improves performance by avoiding I/O's due to swapping.
	  In some workloads with very long-lived large processes, it can
	  instead reduce performance.  Writeback decompresses zcache-compressed
	  pages (in LRU order) when under memory pressure and writes them to
	  the backing swap disk to ameliorate this problem.  Policy driving
	  writeback is still under development.
