This patch is a preparation for adopting ocf_cache_trylock() function. Register OCF bdev path uses vbdev_ocf_mngt_ interface now Register stays synchronous blocking operation in this patch, but with adoption of ocf_cache_trylock() function, register will be asynchronous, in which case we want to use mngt_ interface. This series of OCF patches will enable WriteBack support for OCF bdev. There is a lot of preparation before we will be able to actually implement WriteBack. Dependencies look like this: - WriteBack - Cleaner - trylock - Persistent metadata - asynchronous management API Cleaner is a background agent that does synchronization of data between cache and its cores. Cleaner usually runs every ~30 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. Peristent metadata is functionality of OCF that allows to restore cache state after shutdown We need persistent metadata in context of shutdown with some data being dirty which may only happen when using WriteBack mode Support for persistent metadata requieres asynchronous OCF API because in current version we will have a deadlock during metadata initialization because it is required to be done on different thread than cache initialization. Change-Id: I45d84a5fa0c96581d522050dad186b06d489226e Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455225 Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> |
||
---|---|---|
.. | ||
env | ||
ctx.c | ||
ctx.h | ||
data.c | ||
data.h | ||
Makefile | ||
stats.c | ||
stats.h | ||
utils.c | ||
utils.h | ||
vbdev_ocf_rpc.c | ||
vbdev_ocf.c | ||
vbdev_ocf.h | ||
volume.c | ||
volume.h |