Make request structure more compressed
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
@@ -36,6 +36,8 @@ struct ocf_io_if {
|
||||
|
||||
int (*write)(struct ocf_request *req);
|
||||
|
||||
void (*resume)(struct ocf_request *req);
|
||||
|
||||
const char *name;
|
||||
};
|
||||
|
||||
|
@@ -574,7 +574,6 @@ static int _ocf_engine_refresh(struct ocf_request *req)
|
||||
/* Refresh successful, can process with original IO interface */
|
||||
req->io_if = req->priv;
|
||||
|
||||
req->resume = NULL;
|
||||
req->priv = NULL;
|
||||
|
||||
if (req->rw == OCF_READ)
|
||||
@@ -601,14 +600,13 @@ static int _ocf_engine_refresh(struct ocf_request *req)
|
||||
}
|
||||
|
||||
static const struct ocf_io_if _io_if_refresh = {
|
||||
.read = _ocf_engine_refresh,
|
||||
.write = _ocf_engine_refresh,
|
||||
.read = _ocf_engine_refresh,
|
||||
.write = _ocf_engine_refresh,
|
||||
};
|
||||
|
||||
void ocf_engine_on_resume(struct ocf_request *req)
|
||||
{
|
||||
ENV_BUG_ON(req->priv);
|
||||
ENV_BUG_ON(ocf_engine_on_resume != req->resume);
|
||||
OCF_CHECK_NULL(req->io_if);
|
||||
|
||||
/* Exchange IO interface */
|
||||
|
@@ -22,25 +22,30 @@ static int _ocf_discard_step_do(struct ocf_request *req);
|
||||
static int _ocf_discard_step(struct ocf_request *req);
|
||||
static int _ocf_discard_flush_cache(struct ocf_request *req);
|
||||
static int _ocf_discard_core(struct ocf_request *req);
|
||||
static void _ocf_discard_on_resume(struct ocf_request *req);
|
||||
|
||||
static const struct ocf_io_if _io_if_discard_step = {
|
||||
.read = _ocf_discard_step,
|
||||
.write = _ocf_discard_step
|
||||
.write = _ocf_discard_step,
|
||||
.resume = _ocf_discard_on_resume,
|
||||
};
|
||||
|
||||
static const struct ocf_io_if _io_if_discard_step_resume = {
|
||||
.read = _ocf_discard_step_do,
|
||||
.write = _ocf_discard_step_do
|
||||
.write = _ocf_discard_step_do,
|
||||
.resume = _ocf_discard_on_resume,
|
||||
};
|
||||
|
||||
static const struct ocf_io_if _io_if_discard_flush_cache = {
|
||||
.read = _ocf_discard_flush_cache,
|
||||
.write = _ocf_discard_flush_cache,
|
||||
.resume = _ocf_discard_on_resume,
|
||||
};
|
||||
|
||||
static const struct ocf_io_if _io_if_discard_core = {
|
||||
.read = _ocf_discard_core,
|
||||
.write = _ocf_discard_core
|
||||
.write = _ocf_discard_core,
|
||||
.resume = _ocf_discard_on_resume,
|
||||
};
|
||||
|
||||
static void _ocf_discard_complete_req(struct ocf_request *req, int error)
|
||||
@@ -263,9 +268,6 @@ int ocf_discard(struct ocf_request *req)
|
||||
/* Get OCF request - increase reference counter */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = _ocf_discard_on_resume;
|
||||
|
||||
_ocf_discard_step(req);
|
||||
|
||||
/* Put OCF request - decrease reference counter */
|
||||
|
@@ -102,8 +102,9 @@ static int _ocf_read_fast_do(struct ocf_request *req)
|
||||
}
|
||||
|
||||
static const struct ocf_io_if _io_if_read_fast_resume = {
|
||||
.read = _ocf_read_fast_do,
|
||||
.write = _ocf_read_fast_do,
|
||||
.read = _ocf_read_fast_do,
|
||||
.write = _ocf_read_fast_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
int ocf_read_fast(struct ocf_request *req)
|
||||
@@ -115,8 +116,7 @@ int ocf_read_fast(struct ocf_request *req)
|
||||
/* Get OCF request - increase reference counter */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = ocf_engine_on_resume;
|
||||
/* Set resume io_if */
|
||||
req->io_if = &_io_if_read_fast_resume;
|
||||
|
||||
/*- Metadata RD access -----------------------------------------------*/
|
||||
@@ -172,8 +172,9 @@ int ocf_read_fast(struct ocf_request *req)
|
||||
*/
|
||||
|
||||
static const struct ocf_io_if _io_if_write_fast_resume = {
|
||||
.read = ocf_write_wb_do,
|
||||
.write = ocf_write_wb_do,
|
||||
.read = ocf_write_wb_do,
|
||||
.write = ocf_write_wb_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
int ocf_write_fast(struct ocf_request *req)
|
||||
@@ -185,8 +186,7 @@ int ocf_write_fast(struct ocf_request *req)
|
||||
/* Get OCF request - increase reference counter */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = ocf_engine_on_resume;
|
||||
/* Set resume io_if */
|
||||
req->io_if = &_io_if_write_fast_resume;
|
||||
|
||||
/*- Metadata RD access -----------------------------------------------*/
|
||||
|
@@ -99,6 +99,7 @@ int ocf_read_pt_do(struct ocf_request *req)
|
||||
static const struct ocf_io_if _io_if_pt_resume = {
|
||||
.read = ocf_read_pt_do,
|
||||
.write = ocf_read_pt_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
int ocf_read_pt(struct ocf_request *req)
|
||||
@@ -114,8 +115,7 @@ int ocf_read_pt(struct ocf_request *req)
|
||||
/* Get OCF request - increase reference counter */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = ocf_engine_on_resume;
|
||||
/* Set resume io_if */
|
||||
req->io_if = &_io_if_pt_resume;
|
||||
|
||||
OCF_METADATA_LOCK_RD(); /*- Metadata RD access -----------------------*/
|
||||
|
@@ -206,8 +206,9 @@ static int _ocf_read_generic_do(struct ocf_request *req)
|
||||
}
|
||||
|
||||
static const struct ocf_io_if _io_if_read_generic_resume = {
|
||||
.read = _ocf_read_generic_do,
|
||||
.write = _ocf_read_generic_do,
|
||||
.read = _ocf_read_generic_do,
|
||||
.write = _ocf_read_generic_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
int ocf_read_generic(struct ocf_request *req)
|
||||
@@ -228,7 +229,6 @@ int ocf_read_generic(struct ocf_request *req)
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = ocf_engine_on_resume;
|
||||
req->io_if = &_io_if_read_generic_resume;
|
||||
|
||||
/*- Metadata RD access -----------------------------------------------*/
|
||||
|
@@ -19,8 +19,9 @@
|
||||
#include "engine_debug.h"
|
||||
|
||||
static const struct ocf_io_if _io_if_wb_resume = {
|
||||
.read = ocf_write_wb_do,
|
||||
.write = ocf_write_wb_do,
|
||||
.read = ocf_write_wb_do,
|
||||
.write = ocf_write_wb_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
static void _ocf_write_wb_update_bits(struct ocf_request *req)
|
||||
@@ -176,8 +177,7 @@ int ocf_write_wb(struct ocf_request *req)
|
||||
/* Not sure if we need this. */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = ocf_engine_on_resume;
|
||||
/* Set resume io_if */
|
||||
req->io_if = &_io_if_wb_resume;
|
||||
|
||||
/* TODO: Handle fits into dirty */
|
||||
|
@@ -130,6 +130,7 @@ static void _ocf_write_wi_on_resume(struct ocf_request *req)
|
||||
static const struct ocf_io_if _io_if_wi_resume = {
|
||||
.read = _ocf_write_wi_do,
|
||||
.write = _ocf_write_wi_do,
|
||||
.resume = _ocf_write_wi_on_resume,
|
||||
};
|
||||
|
||||
int ocf_write_wi(struct ocf_request *req)
|
||||
@@ -144,8 +145,7 @@ int ocf_write_wi(struct ocf_request *req)
|
||||
/* Get OCF request - increase reference counter */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = _ocf_write_wi_on_resume;
|
||||
/* Set resume io_if */
|
||||
req->io_if = &_io_if_wi_resume;
|
||||
|
||||
OCF_METADATA_LOCK_RD(); /*- Metadata READ access, No eviction --------*/
|
||||
|
@@ -156,8 +156,9 @@ static int _ocf_write_wt_do(struct ocf_request *req)
|
||||
}
|
||||
|
||||
static const struct ocf_io_if _io_if_wt_resume = {
|
||||
.read = _ocf_write_wt_do,
|
||||
.write = _ocf_write_wt_do,
|
||||
.read = _ocf_write_wt_do,
|
||||
.write = _ocf_write_wt_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
int ocf_write_wt(struct ocf_request *req)
|
||||
@@ -171,8 +172,7 @@ int ocf_write_wt(struct ocf_request *req)
|
||||
/* Get OCF request - increase reference counter */
|
||||
ocf_req_get(req);
|
||||
|
||||
/* Set resume call backs */
|
||||
req->resume = ocf_engine_on_resume;
|
||||
/* Set resume io_if */
|
||||
req->io_if = &_io_if_wt_resume;
|
||||
|
||||
OCF_METADATA_LOCK_RD(); /*- Metadata READ access, No eviction --------*/
|
||||
|
@@ -129,6 +129,7 @@ static int _ocf_zero_do(struct ocf_request *req)
|
||||
static const struct ocf_io_if _io_if_ocf_zero_do = {
|
||||
.read = _ocf_zero_do,
|
||||
.write = _ocf_zero_do,
|
||||
.resume = ocf_engine_on_resume,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -147,7 +148,6 @@ void ocf_engine_zero_line(struct ocf_request *req)
|
||||
|
||||
ENV_BUG_ON(!ocf_engine_is_mapped(req));
|
||||
|
||||
req->resume = ocf_engine_on_resume;
|
||||
req->io_if = &_io_if_ocf_zero_do;
|
||||
|
||||
/* Some cache line are mapped, lock request for WRITE access */
|
||||
|
Reference in New Issue
Block a user