Merge pull request #145 from robertbaldyga/remove-interruption-arg-flush

Remove "interruption" argument from flush() functions
This commit is contained in:
Michał Wysoczański 2019-05-08 12:02:06 +02:00 committed by GitHub
commit 8d09d7ae47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 26 deletions

View File

@ -532,11 +532,10 @@ typedef void (*ocf_mngt_cache_flush_end_t)(ocf_cache_t cache,
* @brief Flush data from given cache
*
* @param[in] cache Cache handle
* @param[in] interruption Allow for interruption
* @param[in] cmpl Completion callback
* @param[in] priv Completion callback context
*/
void ocf_mngt_cache_flush(ocf_cache_t cache, bool interruption,
void ocf_mngt_cache_flush(ocf_cache_t cache,
ocf_mngt_cache_flush_end_t cmpl, void *priv);
/**
@ -553,11 +552,10 @@ typedef void (*ocf_mngt_core_flush_end_t)(ocf_core_t core,
* @brief Flush data to given core
*
* @param[in] core Core handle
* @param[in] interruption Allow for interruption
* @param[in] cmpl Completion callback
* @param[in] priv Completion callback context
*/
void ocf_mngt_core_flush(ocf_core_t core, bool interruption,
void ocf_mngt_core_flush(ocf_core_t core,
ocf_mngt_core_flush_end_t cmpl, void *priv);
/**

View File

@ -2291,8 +2291,7 @@ static void ocf_mngt_cache_detach_flush(ocf_pipeline_t pipeline,
struct ocf_mngt_cache_detach_context *context = priv;
ocf_cache_t cache = context->cache;
ocf_mngt_cache_flush(cache, true, ocf_mngt_cache_detach_flush_cmpl,
context);
ocf_mngt_cache_flush(cache, ocf_mngt_cache_detach_flush_cmpl, context);
}
static void ocf_mngt_cache_detach_wait_pending(ocf_pipeline_t pipeline,

View File

@ -46,8 +46,6 @@ struct ocf_mngt_cache_flush_context
ocf_cache_t cache;
/* target core */
ocf_core_t core;
/* true if flush interrupt respected */
bool allow_interruption;
/* management operation identifier */
enum {
@ -364,18 +362,11 @@ static void _ocf_mngt_flush_portion_end(void *private_data, int error)
env_atomic_cmpxchg(&fsc->error, 0, error);
if (cache->flushing_interrupted) {
first_interrupt = !env_atomic_cmpxchg(&fsc->interrupt_seen, 0, 1);
first_interrupt = !env_atomic_cmpxchg(
&fsc->interrupt_seen, 0, 1);
if (first_interrupt) {
if (context->allow_interruption) {
ocf_cache_log(cache, log_info,
"Flushing interrupted by "
"user\n");
} else {
ocf_cache_log(cache, log_err,
"Cannot interrupt flushing\n");
}
}
if (context->allow_interruption) {
ocf_cache_log(cache, log_info,
"Flushing interrupted by user\n");
env_atomic_cmpxchg(&fsc->error, 0,
-OCF_ERR_FLUSHING_INTERRUPTED);
}
@ -598,6 +589,7 @@ static void _ocf_mngt_cache_flush(ocf_pipeline_t pipeline, void *priv,
ocf_pipeline_arg_t arg)
{
struct ocf_mngt_cache_flush_context *context = priv;
context->cache->flushing_interrupted = 0;
_ocf_mngt_flush_all_cores(context, _ocf_mngt_flush_all_cores_complete);
}
@ -657,7 +649,7 @@ static struct ocf_pipeline_properties _ocf_mngt_cache_flush_pipeline_properties
},
};
void ocf_mngt_cache_flush(ocf_cache_t cache, bool interruption,
void ocf_mngt_cache_flush(ocf_cache_t cache,
ocf_mngt_cache_flush_end_t cmpl, void *priv)
{
ocf_pipeline_t pipeline;
@ -695,7 +687,6 @@ void ocf_mngt_cache_flush(ocf_cache_t cache, bool interruption,
context->cmpl.flush_cache = cmpl;
context->priv = priv;
context->cache = cache;
context->allow_interruption = interruption;
context->op = flush_cache;
ocf_pipeline_next(context->pipeline);
@ -744,7 +735,7 @@ struct ocf_pipeline_properties _ocf_mngt_core_flush_pipeline_properties = {
},
};
void ocf_mngt_core_flush(ocf_core_t core, bool interruption,
void ocf_mngt_core_flush(ocf_core_t core,
ocf_mngt_core_flush_end_t cmpl, void *priv)
{
ocf_pipeline_t pipeline;
@ -785,7 +776,6 @@ void ocf_mngt_core_flush(ocf_core_t core, bool interruption,
context->cmpl.flush_core = cmpl;
context->priv = priv;
context->cache = cache;
context->allow_interruption = interruption;
context->op = flush_core;
context->core = core;
@ -845,7 +835,6 @@ void ocf_mngt_cache_purge(ocf_cache_t cache,
context->cmpl.purge_cache = cmpl;
context->priv = priv;
context->cache = cache;
context->allow_interruption = true;
context->op = purge_cache;
context->purge.core_id = OCF_CORE_ID_INVALID;
context->purge.end_byte = ~0ULL;
@ -899,7 +888,6 @@ void ocf_mngt_core_purge(ocf_core_t core,
context->cmpl.purge_core = cmpl;
context->priv = priv;
context->cache = cache;
context->allow_interruption = true;
context->op = purge_core;
context->purge.core_id = core_id;
context->purge.end_byte = core_size ?: ~0ULL;

View File

@ -505,7 +505,7 @@ class Cache:
c = OcfCompletion(
[("cache", c_void_p), ("priv", c_void_p), ("error", c_int)]
)
self.owner.lib.ocf_mngt_cache_flush(self.cache_handle, False, c, None)
self.owner.lib.ocf_mngt_cache_flush(self.cache_handle, c, None)
c.wait()
if c.results["error"]:
self.put_and_write_unlock()