Merge pull request #76 from robertbaldyga/utils-pipeline-arg

Parametrize pipeline steps
This commit is contained in:
Adam Rutkowski 2019-03-21 09:00:52 +01:00 committed by GitHub
commit f81a7e9d23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 576 additions and 365 deletions

File diff suppressed because it is too large Load Diff

View File

@ -458,83 +458,3 @@ int ocf_mngt_cache_visit_reverse(ocf_ctx_t ocf_ctx,
return result; return result;
} }
struct ocf_mngt_pipeline {
ocf_mngt_pipeline_step_t *steps;
int next_step;
ocf_mngt_pipeline_end_t cmpl;
struct ocf_request *req;
bool finish;
int error;
void *priv;
};
static int _ocf_mngt_pipeline_run_step(struct ocf_request *req)
{
ocf_mngt_pipeline_t pipeline = req->priv;
if (pipeline->steps[pipeline->next_step] && !pipeline->finish)
pipeline->steps[pipeline->next_step++](pipeline, pipeline->priv);
else
pipeline->cmpl(pipeline, pipeline->priv, pipeline->error);
return 0;
}
static const struct ocf_io_if _io_if_pipeline = {
.read = _ocf_mngt_pipeline_run_step,
.write = _ocf_mngt_pipeline_run_step,
};
int ocf_mngt_pipeline_create(ocf_mngt_pipeline_t *pipeline, ocf_cache_t cache,
ocf_mngt_pipeline_step_t *steps, ocf_mngt_pipeline_end_t cmpl,
void *priv)
{
ocf_mngt_pipeline_t tmp_pipeline;
struct ocf_request *req;
tmp_pipeline = env_vzalloc(sizeof(struct ocf_mngt_pipeline));
if (!tmp_pipeline)
return -OCF_ERR_NO_MEM;
req = ocf_req_new(cache->mngt_queue, NULL, 0, 0, 0);
if (!req) {
env_vfree(tmp_pipeline);
return -OCF_ERR_NO_MEM;
}
tmp_pipeline->steps = steps;
tmp_pipeline->next_step = 0;
tmp_pipeline->cmpl = cmpl;
tmp_pipeline->req = req;
tmp_pipeline->finish = false;
tmp_pipeline->error = 0;
tmp_pipeline->priv = priv;
req->info.internal = true;
req->io_if = &_io_if_pipeline;
req->priv = tmp_pipeline;
*pipeline = tmp_pipeline;
return 0;
}
void ocf_mngt_pipeline_destroy(ocf_mngt_pipeline_t pipeline)
{
ocf_req_put(pipeline->req);
env_vfree(pipeline);
}
void ocf_mngt_pipeline_next(ocf_mngt_pipeline_t pipeline)
{
ocf_engine_push_req_front(pipeline->req, true);
}
void ocf_mngt_pipeline_finish(ocf_mngt_pipeline_t pipeline, int error)
{
pipeline->finish = true;
pipeline->error = error;
ocf_engine_push_req_front(pipeline->req, true);
}

View File

@ -30,22 +30,4 @@ int ocf_mngt_add_partition_to_cache(struct ocf_cache *cache,
bool ocf_mngt_is_cache_locked(ocf_cache_t cache); bool ocf_mngt_is_cache_locked(ocf_cache_t cache);
typedef struct ocf_mngt_pipeline *ocf_mngt_pipeline_t;
typedef void (*ocf_mngt_pipeline_step_t)(ocf_mngt_pipeline_t pipeline,
void *priv);
typedef void (*ocf_mngt_pipeline_end_t)(ocf_mngt_pipeline_t pipeline,
void *priv, int error);
int ocf_mngt_pipeline_create(ocf_mngt_pipeline_t *pipeline, ocf_cache_t cache,
ocf_mngt_pipeline_step_t *steps, ocf_mngt_pipeline_end_t cmpl,
void *priv);
void ocf_mngt_pipeline_destroy(ocf_mngt_pipeline_t pipeline);
void ocf_mngt_pipeline_next(ocf_mngt_pipeline_t pipeline);
void ocf_mngt_pipeline_finish(ocf_mngt_pipeline_t pipeline, int error);
#endif /* __OCF_MNGT_COMMON_H__ */ #endif /* __OCF_MNGT_COMMON_H__ */

126
src/utils/utils_pipeline.c Normal file
View File

@ -0,0 +1,126 @@
#include "ocf/ocf.h"
#include "../engine/cache_engine.h"
#include "../engine/engine_common.h"
#include "utils_pipeline.h"
#include "utils_req.h"
struct ocf_pipeline {
struct ocf_pipeline_properties *properties;
struct ocf_request *req;
int next_step;
int next_arg;
bool finish;
int error;
void *priv;
};
static int _ocf_pipeline_run_step(struct ocf_request *req)
{
ocf_pipeline_t pipeline = req->priv;
struct ocf_pipeline_step *step;
ocf_pipeline_arg_t arg;
if (pipeline->finish) {
pipeline->properties->finish(pipeline, pipeline->priv,
pipeline->error);
return 0;
}
while (true) {
step = &pipeline->properties->steps[pipeline->next_step];
switch (step->type) {
case ocf_pipeline_step_single:
pipeline->next_step++;
step->hndl(pipeline, pipeline->priv, &step->arg);
return 0;
case ocf_pipeline_step_foreach:
arg = &step->args[pipeline->next_arg++];
if (arg->type == ocf_pipeline_arg_terminator) {
pipeline->next_arg = 0;
pipeline->next_step++;
continue;
}
step->hndl(pipeline, pipeline->priv, arg);
return 0;
case ocf_pipeline_step_terminator:
pipeline->properties->finish(pipeline, pipeline->priv,
pipeline->error);
return 0;
default:
ENV_BUG();
}
}
return 0;
}
static const struct ocf_io_if _io_if_pipeline = {
.read = _ocf_pipeline_run_step,
.write = _ocf_pipeline_run_step,
};
int ocf_pipeline_create(ocf_pipeline_t *pipeline, ocf_cache_t cache,
struct ocf_pipeline_properties *properties)
{
ocf_pipeline_t tmp_pipeline;
struct ocf_request *req;
tmp_pipeline = env_vzalloc(sizeof(*tmp_pipeline) +
properties->priv_size);
if (!tmp_pipeline)
return -OCF_ERR_NO_MEM;
if (properties->priv_size > 0) {
tmp_pipeline->priv = (void *)tmp_pipeline +
sizeof(*tmp_pipeline);
}
req = ocf_req_new(cache->mngt_queue, NULL, 0, 0, 0);
if (!req) {
env_vfree(tmp_pipeline);
return -OCF_ERR_NO_MEM;
}
tmp_pipeline->properties = properties;
tmp_pipeline->req = req;
tmp_pipeline->next_step = 0;
tmp_pipeline->finish = false;
tmp_pipeline->error = 0;
req->info.internal = true;
req->io_if = &_io_if_pipeline;
req->priv = tmp_pipeline;
*pipeline = tmp_pipeline;
return 0;
}
void ocf_pipeline_destroy(ocf_pipeline_t pipeline)
{
ocf_req_put(pipeline->req);
env_vfree(pipeline);
}
void ocf_pipeline_set_priv(ocf_pipeline_t pipeline, void *priv)
{
pipeline->priv = priv;
}
void *ocf_pipeline_get_priv(ocf_pipeline_t pipeline)
{
return pipeline->priv;
}
void ocf_pipeline_next(ocf_pipeline_t pipeline)
{
ocf_engine_push_req_front(pipeline->req, true);
}
void ocf_pipeline_finish(ocf_pipeline_t pipeline, int error)
{
pipeline->finish = true;
pipeline->error = error;
ocf_engine_push_req_front(pipeline->req, true);
}

134
src/utils/utils_pipeline.h Normal file
View File

@ -0,0 +1,134 @@
/*
* Copyright(c) 2019 Intel Corporation
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#ifndef __UTILS_PIPELINE_H__
#define __UTILS_PIPELINE_H__
#include "../ocf_cache_priv.h"
enum ocf_pipeline_step_type {
ocf_pipeline_step_single,
ocf_pipeline_step_foreach,
ocf_pipeline_step_terminator,
};
enum ocf_pipeline_arg_type {
ocf_pipeline_arg_none,
ocf_pipeline_arg_int,
ocf_pipeline_arg_ptr,
ocf_pipeline_arg_terminator,
};
struct ocf_pipeline_arg {
enum ocf_pipeline_arg_type type;
union {
int i;
void *p;
} val;
};
typedef struct ocf_pipeline_arg *ocf_pipeline_arg_t;
#define OCF_PL_ARG_NONE() \
{ .type = ocf_pipeline_arg_none, }
#define OCF_PL_ARG_INT(_int) \
{ .type = ocf_pipeline_arg_int, .val.i = _int }
#define OCF_PL_ARG_PTR(_ptr) \
{ .type = ocf_pipeline_arg_ptr, .val.p = _ptr }
#define OCF_PL_ARG_TERMINATOR() \
{ .type = ocf_pipeline_arg_terminator, }
static inline int ocf_pipeline_arg_get_int(ocf_pipeline_arg_t arg)
{
ENV_BUG_ON(arg->type != ocf_pipeline_arg_int);
return arg->val.i;
}
static inline void *ocf_pipeline_arg_get_ptr(ocf_pipeline_arg_t arg)
{
ENV_BUG_ON(arg->type != ocf_pipeline_arg_ptr);
return arg->val.p;
}
typedef struct ocf_pipeline *ocf_pipeline_t;
typedef void (*ocf_pipeline_step_hndl_t)(ocf_pipeline_t pipeline,
void *priv, ocf_pipeline_arg_t arg);
typedef void (*ocf_pipeline_finish_t)(ocf_pipeline_t pipeline,
void *priv, int error);
struct ocf_pipeline_step {
enum ocf_pipeline_step_type type;
ocf_pipeline_step_hndl_t hndl;
union {
struct ocf_pipeline_arg arg;
struct ocf_pipeline_arg *args;
};
};
#define OCF_PL_STEP(_hndl) \
{ \
.type = ocf_pipeline_step_single, \
.hndl = _hndl, \
}
#define OCF_PL_STEP_ARG_INT(_hndl, _int) \
{ \
.type = ocf_pipeline_step_single, \
.hndl = _hndl, \
.arg = { \
.type = ocf_pipeline_arg_int, \
.val.i = _int, \
} \
}
#define OCF_PL_STEP_ARG_PTR(_hndl, _ptr) \
{ \
.type = ocf_pipeline_step_single, \
.hndl = _hndl, \
.arg = { \
.type = ocf_pipeline_arg_ptr, \
.val.p = _ptr, \
} \
}
#define OCF_PL_STEP_FOREACH(_hndl, _args) \
{ \
.type = ocf_pipeline_step_foreach, \
.hndl = _hndl, \
.args = _args, \
}
#define OCF_PL_STEP_TERMINATOR() \
{ \
.type = ocf_pipeline_step_terminator, \
}
struct ocf_pipeline_properties {
uint32_t priv_size;
ocf_pipeline_finish_t finish;
struct ocf_pipeline_step steps[];
};
int ocf_pipeline_create(ocf_pipeline_t *pipeline, ocf_cache_t cache,
struct ocf_pipeline_properties *properties);
void ocf_pipeline_set_priv(ocf_pipeline_t pipeline, void *priv);
void *ocf_pipeline_get_priv(ocf_pipeline_t pipeline);
void ocf_pipeline_destroy(ocf_pipeline_t pipeline);
void ocf_pipeline_next(ocf_pipeline_t pipeline);
void ocf_pipeline_finish(ocf_pipeline_t pipeline, int error);
#endif /* __UTILS_PIPELINE_H__ */

View File

@ -34,6 +34,7 @@
#include "../utils/utils_device.h" #include "../utils/utils_device.h"
#include "../utils/utils_io.h" #include "../utils/utils_io.h"
#include "../utils/utils_cache_line.h" #include "../utils/utils_cache_line.h"
#include "../utils/utils_pipeline.h"
#include "../ocf_utils.h" #include "../ocf_utils.h"
#include "../concurrency/ocf_concurrency.h" #include "../concurrency/ocf_concurrency.h"
#include "../eviction/ops.h" #include "../eviction/ops.h"
@ -103,132 +104,152 @@ char *__wrap_ocf_cache_get_name(ocf_cache_t cache)
} }
void __wrap__ocf_mngt_test_volume_initial_write( void __wrap__ocf_mngt_test_volume_initial_write(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_test_volume_first_read( void __wrap_ocf_mngt_test_volume_first_read(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume_discard( void __wrap__ocf_mngt_test_volume_discard(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume_second_read( void __wrap__ocf_mngt_test_volume_second_read(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_cache_device( void __wrap__ocf_mngt_attach_cache_device(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_check_ram( void __wrap__ocf_mngt_attach_check_ram(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_load_properties( void __wrap__ocf_mngt_attach_load_properties(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_prepare_metadata( void __wrap__ocf_mngt_attach_prepare_metadata(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume( void __wrap__ocf_mngt_test_volume(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_load_superblock( void __wrap__ocf_mngt_attach_load_superblock(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_init_instance( void __wrap__ocf_mngt_attach_init_instance(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_clean_pol( void __wrap__ocf_mngt_attach_clean_pol(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_flush_metadata( void __wrap__ocf_mngt_attach_flush_metadata(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_discard( void __wrap__ocf_mngt_attach_discard(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_flush( void __wrap__ocf_mngt_attach_flush(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_shutdown_status( void __wrap__ocf_mngt_attach_shutdown_status(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_post_init( void __wrap__ocf_mngt_attach_post_init(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_wait_io( void __wrap_ocf_mngt_cache_stop_wait_io(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_remove_cores( void __wrap_ocf_mngt_cache_stop_remove_cores(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_unplug( void __wrap_ocf_mngt_cache_stop_unplug(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_put_io_queues( void __wrap_ocf_mngt_cache_stop_put_io_queues(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_flush( void __wrap_ocf_mngt_cache_detach_flush(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_wait_pending( void __wrap_ocf_mngt_cache_detach_wait_pending(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_update_metadata( void __wrap_ocf_mngt_cache_detach_update_metadata(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_unplug( void __wrap_ocf_mngt_cache_detach_unplug(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume_first_read( void __wrap__ocf_mngt_test_volume_first_read(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{
}
void __wrap__ocf_mngt_test_volume_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{
}
void __wrap__ocf_mngt_cache_attach_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{
}
void __wrap_ocf_mngt_cache_stop_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{
}
void __wrap_ocf_mngt_cache_detach_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{ {
} }

View File

@ -29,6 +29,7 @@
#include "../utils/utils_device.h" #include "../utils/utils_device.h"
#include "../utils/utils_io.h" #include "../utils/utils_io.h"
#include "../utils/utils_cache_line.h" #include "../utils/utils_cache_line.h"
#include "../utils/utils_pipeline.h"
#include "../ocf_utils.h" #include "../ocf_utils.h"
#include "../concurrency/ocf_concurrency.h" #include "../concurrency/ocf_concurrency.h"
#include "../eviction/ops.h" #include "../eviction/ops.h"
@ -60,132 +61,152 @@ char *__wrap_ocf_cache_get_name(ocf_cache_t cache)
} }
void __wrap__ocf_mngt_test_volume_initial_write( void __wrap__ocf_mngt_test_volume_initial_write(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_test_volume_first_read( void __wrap_ocf_mngt_test_volume_first_read(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume_discard( void __wrap__ocf_mngt_test_volume_discard(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume_second_read( void __wrap__ocf_mngt_test_volume_second_read(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_cache_device( void __wrap__ocf_mngt_attach_cache_device(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_check_ram( void __wrap__ocf_mngt_attach_check_ram(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_load_properties( void __wrap__ocf_mngt_attach_load_properties(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_prepare_metadata( void __wrap__ocf_mngt_attach_prepare_metadata(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume( void __wrap__ocf_mngt_test_volume(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_load_superblock( void __wrap__ocf_mngt_attach_load_superblock(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_init_instance( void __wrap__ocf_mngt_attach_init_instance(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_clean_pol( void __wrap__ocf_mngt_attach_clean_pol(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_flush_metadata( void __wrap__ocf_mngt_attach_flush_metadata(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_discard( void __wrap__ocf_mngt_attach_discard(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_flush( void __wrap__ocf_mngt_attach_flush(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_shutdown_status( void __wrap__ocf_mngt_attach_shutdown_status(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_attach_post_init( void __wrap__ocf_mngt_attach_post_init(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_wait_io( void __wrap_ocf_mngt_cache_stop_wait_io(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_remove_cores( void __wrap_ocf_mngt_cache_stop_remove_cores(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_unplug( void __wrap_ocf_mngt_cache_stop_unplug(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_stop_put_io_queues( void __wrap_ocf_mngt_cache_stop_put_io_queues(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_flush( void __wrap_ocf_mngt_cache_detach_flush(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_wait_pending( void __wrap_ocf_mngt_cache_detach_wait_pending(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_update_metadata( void __wrap_ocf_mngt_cache_detach_update_metadata(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap_ocf_mngt_cache_detach_unplug( void __wrap_ocf_mngt_cache_detach_unplug(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{ {
} }
void __wrap__ocf_mngt_test_volume_first_read( void __wrap__ocf_mngt_test_volume_first_read(
ocf_mngt_pipeline_t test_pipeline, void *priv) ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
{
}
void __wrap__ocf_mngt_test_volume_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{
}
void __wrap__ocf_mngt_cache_attach_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{
}
void __wrap_ocf_mngt_cache_stop_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{
}
void __wrap_ocf_mngt_cache_detach_finish(
ocf_pipeline_t pipeline, void *priv, int error)
{ {
} }