=================
Writecache target
=================

The writecache target caches writes on persistent memory or on SSD. It
doesn't cache reads because reads are supposed to be cached in page cache
in normal RAM.

When the device is constructed, the first sector should be zeroed or the
first sector should contain valid superblock from previous invocation.

Constructor parameters:

1. type of the cache device - "p" or "s"
	- p - persistent memory
	- s - SSD
2. the underlying device that will be cached
3. the cache device
4. block size (4096 is recommended; the maximum block size is the page
   size)
5. the number of optional parameters (the parameters with an argument
   count as two)
	start_sector n		(default: 0)
		offset from the start of cache device in 512-byte sectors
	high_watermark n	(default: 50)
		start writeback when the number of used blocks reach this
		watermark
	low_watermark x		(default: 45)
		stop writeback when the number of used blocks drops below
		this watermark
	writeback_jobs n	(default: unlimited)
		limit the number of blocks that are in flight during
		writeback. Setting this value reduces writeback
		throughput, but it may improve latency of read requests
	autocommit_blocks n	(default: 64 for pmem, 65536 for ssd)
		when the application writes this amount of blocks without
		issuing the FLUSH request, the blocks are automatically
		committed
	autocommit_time ms	(default: 1000)
		autocommit time in milliseconds. The data is automatically
		committed if this time passes and no FLUSH request is
		received
	fua			(by default on)
		applicable only to persistent memory - use the FUA flag
		when writing data from persistent memory back to the
		underlying device
	nofua
		applicable only to persistent memory - don't use the FUA
		flag when writing back data and send the FLUSH request
		afterwards

		- some underlying devices perform better with fua, some
		  with nofua. The user should test it
	cleaner
		when this option is activated (either in the constructor
		arguments or by a message), the cache will not promote
		new writes (however, writes to already cached blocks are
		promoted, to avoid data corruption due to misordered
		writes) and it will gradually writeback any cached
		data. The userspace can then monitor the cleaning
		process with "dmsetup status". When the number of cached
		blocks drops to zero, userspace can unload the
		dm-writecache target and replace it with dm-linear or
		other targets.
	max_age n
		specifies the maximum age of a block in milliseconds. If
		a block is stored in the cache for too long, it will be
		written to the underlying device and cleaned up.
	metadata_only
		only metadata is promoted to the cache. This option
		improves performance for heavier REQ_META workloads.
	pause_writeback n	(default: 3000)
		pause writeback if there was some write I/O redirected to
		the origin volume in the last n milliseconds

Status:
1. error indicator - 0 if there was no error, otherwise error number
2. the number of blocks
3. the number of free blocks
4. the number of blocks under writeback

Messages:
	flush
		flush the cache device. The message returns successfully
		if the cache device was flushed without an error
	flush_on_suspend
		flush the cache device on next suspend. Use this message
		when you are going to remove the cache device. The proper
		sequence for removing the cache device is:

		1. send the "flush_on_suspend" message
		2. load an inactive table with a linear target that maps
		   to the underlying device
		3. suspend the device
		4. ask for status and verify that there are no errors
		5. resume the device, so that it will use the linear
		   target
		6. the cache device is now inactive and it can be deleted
	cleaner
		See above "cleaner" constructor documentation.
