Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions inc/ocf_io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down
25 changes: 12 additions & 13 deletions src/ocf_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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);

Expand All @@ -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);
Expand All @@ -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_core_seq_cutoff_update(core, req);
ocf_req_put(req);

if (fastpath == OCF_FAST_PATH_YES)
return;

ocf_req_clear_map(req);
ocf_core_seq_cutoff_update(core, req);

ret = ocf_engine_hndl_req(req);
if (ret) {
Expand All @@ -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)
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
15 changes: 1 addition & 14 deletions src/ocf_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);

Expand Down
16 changes: 4 additions & 12 deletions src/ocf_request.h
Original file line number Diff line number Diff line change
@@ -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
*/

Expand Down Expand Up @@ -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
*/
Expand Down Expand Up @@ -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) */

Expand Down Expand Up @@ -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 */

Expand All @@ -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 */

Expand Down
3 changes: 0 additions & 3 deletions tests/functional/pyocf/types/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,6 @@ def del_object(self):
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):
Expand Down
Loading