Parametrize pipeline steps

This allows to reuse same step functions giving them different parameters
on each step.

Additionally move pipeline to utils, to make it accessible to other
subsystems of OCF (e.g. metadata).

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
Robert Baldyga
2019-03-18 09:34:13 +01:00
parent 7a3b3fd84f
commit 23b0a32aec
7 changed files with 576 additions and 365 deletions

View File

@@ -34,6 +34,7 @@
#include "../utils/utils_device.h"
#include "../utils/utils_io.h"
#include "../utils/utils_cache_line.h"
#include "../utils/utils_pipeline.h"
#include "../ocf_utils.h"
#include "../concurrency/ocf_concurrency.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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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_io.h"
#include "../utils/utils_cache_line.h"
#include "../utils/utils_pipeline.h"
#include "../ocf_utils.h"
#include "../concurrency/ocf_concurrency.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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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(
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)
{
}