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.
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455225 (master)
(cherry picked from commit
|
||
---|---|---|
.. | ||
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 |