Merge pull request #854 from robertbaldyga/request-cleanup
A little cleanup between ocf_request and ocf_io
This commit is contained in:
commit
08eb00665c
@ -45,15 +45,6 @@ typedef void (*ocf_handle_io_t)(ocf_io_t io, void *opaque);
|
||||
*/
|
||||
typedef void (*ocf_end_io_t)(ocf_io_t io, void *priv1, void *priv2, int error);
|
||||
|
||||
/**
|
||||
* @brief Increase reference counter in OCF IO
|
||||
*
|
||||
* @note Wrapper for get IO operation
|
||||
*
|
||||
* @param[in] io OCF IO
|
||||
*/
|
||||
void ocf_io_get(ocf_io_t io);
|
||||
|
||||
/**
|
||||
* @brief Decrease reference counter in OCF IO
|
||||
*
|
||||
|
@ -213,8 +213,7 @@ static void ocf_req_complete(struct ocf_request *req, int error)
|
||||
|
||||
dec_counter_if_req_was_dirty(req);
|
||||
|
||||
/* Invalidate OCF IO, it is not valid after completion */
|
||||
ocf_io_put(req);
|
||||
ocf_req_put(req);
|
||||
}
|
||||
|
||||
static inline ocf_req_cache_mode_t _ocf_core_req_resolve_fast_mode(
|
||||
@ -261,7 +260,7 @@ static void ocf_core_volume_submit_io(ocf_io_t io)
|
||||
struct ocf_request *req = ocf_io_to_req(io);
|
||||
ocf_core_t core;
|
||||
ocf_cache_t cache;
|
||||
int ret;
|
||||
int ret, fastpath;
|
||||
|
||||
OCF_CHECK_NULL(io);
|
||||
|
||||
@ -281,7 +280,7 @@ static void ocf_core_volume_submit_io(ocf_io_t io)
|
||||
|
||||
req->complete = ocf_req_complete;
|
||||
|
||||
ocf_io_get(io);
|
||||
ocf_req_get(req);
|
||||
|
||||
if (unlikely(req->d2c)) {
|
||||
ocf_core_update_stats(core, io);
|
||||
@ -303,15 +302,15 @@ static void ocf_core_volume_submit_io(ocf_io_t io)
|
||||
* sequential cutoff info */
|
||||
ocf_req_get(req);
|
||||
|
||||
if (ocf_core_submit_io_fast(req, cache) == OCF_FAST_PATH_YES) {
|
||||
ocf_core_seq_cutoff_update(core, req);
|
||||
ocf_req_put(req);
|
||||
return;
|
||||
}
|
||||
fastpath = ocf_core_submit_io_fast(req, cache);
|
||||
|
||||
ocf_req_put(req);
|
||||
ocf_req_clear_map(req);
|
||||
ocf_core_seq_cutoff_update(core, req);
|
||||
ocf_req_put(req);
|
||||
|
||||
if (fastpath == OCF_FAST_PATH_YES)
|
||||
return;
|
||||
|
||||
ocf_req_clear_map(req);
|
||||
|
||||
ret = ocf_engine_hndl_req(req);
|
||||
if (ret) {
|
||||
@ -323,7 +322,7 @@ static void ocf_core_volume_submit_io(ocf_io_t io)
|
||||
|
||||
err:
|
||||
ocf_io_end_func(io, ret);
|
||||
ocf_io_put(req);
|
||||
ocf_req_put(req);
|
||||
}
|
||||
|
||||
static void ocf_core_volume_submit_flush(ocf_io_t io)
|
||||
@ -349,7 +348,7 @@ static void ocf_core_volume_submit_flush(ocf_io_t io)
|
||||
|
||||
req->complete = ocf_req_complete;
|
||||
|
||||
ocf_io_get(io);
|
||||
ocf_req_get(req);
|
||||
|
||||
if (unlikely(req->d2c)) {
|
||||
ocf_d2c_flush_fast(req);
|
||||
@ -387,7 +386,7 @@ static void ocf_core_volume_submit_discard(ocf_io_t io)
|
||||
|
||||
req->complete = ocf_req_complete;
|
||||
|
||||
ocf_io_get(io);
|
||||
ocf_req_get(req);
|
||||
|
||||
if (unlikely(req->d2c)) {
|
||||
ocf_d2c_discard_fast(req);
|
||||
|
15
src/ocf_io.c
15
src/ocf_io.c
@ -89,7 +89,6 @@ ocf_io_t ocf_io_new(ocf_volume_t volume, ocf_queue_t queue,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
env_atomic_set(&req->io.ref_count, 1);
|
||||
req->io.volume = volume;
|
||||
req->io.io_class = io_class;
|
||||
req->flags = flags;
|
||||
@ -125,22 +124,10 @@ uint32_t ocf_io_get_offset(ocf_io_t io)
|
||||
return req->offset;
|
||||
}
|
||||
|
||||
void ocf_io_get(ocf_io_t io)
|
||||
{
|
||||
struct ocf_request *req = ocf_io_to_req(io);
|
||||
|
||||
env_atomic_inc_return(&req->io.ref_count);
|
||||
}
|
||||
|
||||
void ocf_io_put(ocf_io_t io)
|
||||
{
|
||||
struct ocf_request *req = ocf_io_to_req(io);
|
||||
struct ocf_volume *volume;
|
||||
|
||||
if (env_atomic_dec_return(&req->io.ref_count))
|
||||
return;
|
||||
|
||||
volume = req->io.volume;
|
||||
struct ocf_volume *volume = req->io.volume;
|
||||
|
||||
ocf_io_allocator_del(&volume->type->allocator, (void *)req);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright(c) 2012-2022 Intel Corporation
|
||||
* Copyright(c) 2024 Huawei Technologies
|
||||
* Copyright(c) 2024-2025 Huawei Technologies
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
@ -129,11 +129,6 @@ struct ocf_request_io {
|
||||
*/
|
||||
uint8_t io_class;
|
||||
|
||||
/**
|
||||
* @brief OCF IO reference count
|
||||
*/
|
||||
env_atomic ref_count;
|
||||
|
||||
/**
|
||||
* @brief Front volume handle
|
||||
*/
|
||||
@ -259,6 +254,9 @@ struct ocf_request {
|
||||
uint8_t rw : 1;
|
||||
/*!< Indicator of IO direction - Read/Write */
|
||||
|
||||
uint8_t alock_rw: 1;
|
||||
/*!< Read/Write mode for alock*/
|
||||
|
||||
uint8_t d2c : 1;
|
||||
/**!< request affects metadata cachelines (is not direct-to-core) */
|
||||
|
||||
@ -300,9 +298,6 @@ struct ocf_request {
|
||||
|
||||
ocf_req_cache_mode_t cache_mode;
|
||||
|
||||
uint64_t timestamp;
|
||||
/*!< Tracing timestamp */
|
||||
|
||||
ocf_queue_t io_queue;
|
||||
/*!< I/O queue handle for which request should be submitted */
|
||||
|
||||
@ -317,9 +312,6 @@ struct ocf_request {
|
||||
|
||||
struct ocf_req_discard_info discard;
|
||||
|
||||
uint32_t alock_rw;
|
||||
/*!< Read/Write mode for alock*/
|
||||
|
||||
uint8_t *alock_status;
|
||||
/*!< Mapping for locked/unlocked alock entries */
|
||||
|
||||
|
@ -81,9 +81,6 @@ class Io(Structure):
|
||||
def put(self):
|
||||
OcfLib.getInstance().ocf_io_put(byref(self))
|
||||
|
||||
def get(self):
|
||||
OcfLib.getInstance().ocf_io_get(byref(self))
|
||||
|
||||
@staticmethod
|
||||
@END
|
||||
def c_end(io, priv1, priv2, err):
|
||||
|
Loading…
Reference in New Issue
Block a user