Spdk/lib/bdev
Vitaliy Mysak 80a2ff01f3 ocf: implement OCF cleaner
Implement cleaner that is used in WriteBack mode.

Cleaner is a background agent that does synchronization
 of data between cache and its cores.
 Cleaner usually runs every ~20 seconds to perform cleaning.
 The synchronization is a simmilar operation to OCF management flushes.
We need cleaner for WriteBack because only WriteBack mode
 produces dirty data that cleaner needs to deal with.
Cleaner requires adopting trylock() because in current version
 cleaner uses management lock when performs cleaning,
 which may lead to deadlocks if cleaner runs on
 the same thread as management operations.

WriteBack mode is fully functional after this change,
  but persistent metadata support is required to use it for production.

Cleaner will run on management thread for now.
  We plan to implement functionality of
  chosing a CPU core where cleaner should run.
Cleaning policy is not configurable yet.
  The default is ALRU with 20 sec interval.

Change-Id: I35aa7e00c44e0d7a77e64e60df1f66f20be03f55
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448537
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-05-23 19:01:38 +00:00
..
aio bdev/aio: An error code can be returned via the rpc interface. 2019-05-22 16:12:40 +00:00
compress bdev/compress: fix issues with multi-thread 2019-05-22 15:36:48 +00:00
crypto bdev/crypto: cleanup the vbdev_crypto_examine 2019-05-02 09:10:38 +00:00
error bdev: make spdk_bdev_register_module_xxx function names predictable 2019-02-11 23:56:53 +00:00
gpt bdev: switch to spdk_*malloc(). 2019-04-09 06:30:42 +00:00
iscsi bdev/iscsi: fix iscsi bdev wrong lun id 2019-04-01 01:16:51 +00:00
lvol misc/rpc: rename some C functions of rpc methods 2019-05-07 05:30:16 +00:00
malloc bdev: Make malloc bdev use the new zero copy mechanism 2019-04-23 18:38:39 +00:00
null bdev/null : Clean up module resources that failed to initialize. 2019-04-24 22:25:47 +00:00
nvme misc/rpc: rename some C functions of rpc methods 2019-05-07 05:30:16 +00:00
ocf ocf: implement OCF cleaner 2019-05-23 19:01:38 +00:00
passthru bdev/passthru: add error check in get buffer read callback 2019-05-20 17:02:27 +00:00
pmem bdev: process failure of spdk_bdev_io_get_buf_cb in each bdev module 2019-02-27 07:28:15 +00:00
raid bdev/raid: Fix more than a space between struct and name struct 2019-05-14 22:36:04 +00:00
rbd bdev: process failure of spdk_bdev_io_get_buf_cb in each bdev module 2019-02-27 07:28:15 +00:00
rpc bdev: make bdevs array for get_bdevs_iostat RPC 2019-05-08 22:43:00 +00:00
split misc/rpc: rename some C functions of rpc methods 2019-05-07 05:30:16 +00:00
uring bdev: Add io_uring bdev module 2019-03-22 18:51:48 +00:00
virtio misc/rpc: rename some C functions of rpc methods 2019-05-07 05:30:16 +00:00
bdev.c bdev: complete parent IO only when all the children IO are finished 2019-05-22 08:18:40 +00:00
Makefile bdev/compress: add compression vbdev module 2019-03-27 14:51:22 +00:00
part.c bdev: don't allow NVME_IO types for partitioned bdevs 2019-05-06 05:46:12 +00:00
scsi_nvme.c bdev: move error union to internal spdk_bdev_io struct 2018-06-26 20:04:07 +00:00
vtune.c mk: don't use '-include spdk/config.h' 2018-10-02 23:13:32 +00:00