Asynchronous implementation of flush and purge - part 1

For flush/purge entry points to be fully asynchronous we still
need to rework flush mutex and waiting for outstanding dirty
requests.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
Adam Rutkowski
2019-03-19 17:24:12 -04:00
parent 70df1d80a1
commit 0d0fd0be75
2 changed files with 474 additions and 195 deletions

View File

@@ -55,6 +55,8 @@ struct flush_data {
ocf_core_id_t core_id;
};
typedef void (*ocf_flush_containter_coplete_t)(void *ctx);
/**
* @brief Flush table container
*/
@@ -66,14 +68,15 @@ struct flush_container {
struct ocf_cleaner_attribs attribs;
ocf_cache_t cache;
env_atomic *progress;
env_atomic *error;
env_waitqueue *wq;
env_atomic completed;
struct ocf_request *req;
uint64_t flush_portion;
uint64_t ticks1;
uint64_t ticks2;
ocf_flush_containter_coplete_t end;
struct ocf_mngt_cache_flush_context *context;
};
/**