2019-06-12 20:52:43 +03:00
|
|
|
=================
|
|
|
|
Writecache target
|
|
|
|
=================
|
|
|
|
|
2018-03-08 16:25:24 +03:00
|
|
|
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:
|
2019-06-12 20:52:43 +03:00
|
|
|
|
2018-03-08 16:25:24 +03:00
|
|
|
1. type of the cache device - "p" or "s"
|
2019-06-12 20:52:43 +03:00
|
|
|
|
|
|
|
- p - persistent memory
|
|
|
|
- s - SSD
|
2018-03-08 16:25:24 +03:00
|
|
|
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)
|
2019-06-12 20:52:43 +03:00
|
|
|
|
2018-06-29 04:00:14 +03:00
|
|
|
start_sector n (default: 0)
|
|
|
|
offset from the start of cache device in 512-byte sectors
|
2018-03-08 16:25:24 +03:00
|
|
|
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
|
Documentation: fix multiple typos found in the admin-guide subdirectory
Fix thirty five typos in dm-integrity.rst, dm-raid.rst, dm-zoned.rst,
verity.rst, writecache.rst, tsx_async_abort.rst, md.rst, bttv.rst,
dvb_references.rst, frontend-cardlist.rst, gspca-cardlist.rst, ipu3.rst,
remote-controller.rst, mm/index.rst, numaperf.rst, userfaultfd.rst,
module-signing.rst, imx-ddr.rst, intel-speed-select.rst,
intel_pstate.rst, ramoops.rst, abi.rst, kernel.rst, vm.rst
Signed-off-by: Andrew Klychkov <andrew.a.klychkov@gmail.com>
Link: https://lore.kernel.org/r/20201204072848.GA49895@spblnx124.lan
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2020-12-04 10:28:48 +03:00
|
|
|
committed
|
2018-03-08 16:25:24 +03:00
|
|
|
autocommit_time ms (default: 1000)
|
|
|
|
autocommit time in milliseconds. The data is automatically
|
Documentation: fix multiple typos found in the admin-guide subdirectory
Fix thirty five typos in dm-integrity.rst, dm-raid.rst, dm-zoned.rst,
verity.rst, writecache.rst, tsx_async_abort.rst, md.rst, bttv.rst,
dvb_references.rst, frontend-cardlist.rst, gspca-cardlist.rst, ipu3.rst,
remote-controller.rst, mm/index.rst, numaperf.rst, userfaultfd.rst,
module-signing.rst, imx-ddr.rst, intel-speed-select.rst,
intel_pstate.rst, ramoops.rst, abi.rst, kernel.rst, vm.rst
Signed-off-by: Andrew Klychkov <andrew.a.klychkov@gmail.com>
Link: https://lore.kernel.org/r/20201204072848.GA49895@spblnx124.lan
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2020-12-04 10:28:48 +03:00
|
|
|
committed if this time passes and no FLUSH request is
|
2018-03-08 16:25:24 +03:00
|
|
|
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
|
2019-06-12 20:52:43 +03:00
|
|
|
|
2018-03-08 16:25:24 +03:00
|
|
|
- some underlying devices perform better with fua, some
|
|
|
|
with nofua. The user should test it
|
|
|
|
|
|
|
|
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:
|
2019-06-12 20:52:43 +03:00
|
|
|
|
2018-03-08 16:25:24 +03:00
|
|
|
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
|