Commit Graph

1847 Commits

Author SHA1 Message Date
Robert Baldyga
1aa9c382c7
Merge pull request #843 from mmichal10/suppress-cache-errors
Don't modify req->error for IOs outside io engines
2024-10-01 14:24:35 +02:00
Michal Mielewczyk
237f6c708a Don't modify req->error for IOs outside io engines
`req->error` should be modified by the request's owner only; hence, if
the request has been allocated to handle IO (i.e. it's not an internal OCF
request) only engines can change it

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-01 14:06:26 +02:00
Robert Baldyga
f59f6e4b33
Merge pull request #842 from robertbaldyga/fix-inline
Place "inline" before the type declaration
2024-10-01 09:52:36 +02:00
Robert Baldyga
3f2b382a2c Place "inline" before the type declaration
It's needed to make OCF compile with kernel 6.11.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-28 09:42:55 +02:00
Robert Baldyga
c978848786
Merge pull request #841 from mmichal10/static-functions
Fix missing 'static' identifier
2024-09-27 12:23:59 +02:00
Michal Mielewczyk
e42df078c3 Add missing 'static' identifier
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-27 11:25:21 +02:00
Robert Baldyga
34778d4529
Merge pull request #838 from robertbaldyga/fix-wi-double-completion
Fix double completion in engine_wi
2024-09-25 09:20:06 +02:00
Robert Baldyga
3e21b11703 Remove unnecessary references to req->req_remaining
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-24 20:06:24 +02:00
Robert Baldyga
fd508435d6 Fix double completion in engine_wi
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-24 20:04:09 +02:00
Robert Baldyga
d126a30cce
Merge pull request #836 from rafalste/parallelize_use_mngt_queue
Use management queue for parallelized management operations
2024-09-24 15:12:50 +02:00
Rafal Stefanowski
97ee3af8f7 Use management queue for parallelized management operations
When IO queues are used for parallelized management operations,
e.g. changing cleaning policy, a deadlock may occur due to global
metadata lock interfering with taking request from IO queue,
as they might be run on the same thread. As a workaround using
a management queue specifically for such operations eliminates
this problem.

Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
2024-09-23 14:05:33 +02:00
Robert Baldyga
d8994e886e
Merge pull request #835 from mmichal10/composite-improvements
Composite improvements
2024-09-23 12:33:35 +02:00
Michal Mielewczyk
c6d2436622 volume: add description to 'uuid_copy' filed
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-23 12:15:23 +02:00
Michal Mielewczyk
82c8d4f45c composite volume: add subvolume iterator API
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 17:59:37 +02:00
Robert Baldyga
6907abeba2
Merge pull request #831 from mmichal10/io_forward_pt2
Io forward pt2
2024-09-20 17:21:36 +02:00
Robert Baldyga
3fbb75756e Consolidate ocf_request_io and ocf_request - io properties
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
d8d750462a tests: pyocf: Remove legacy submit_* ops implementation from volumes
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
9b7f476470 pyocf: Update after removing struct ocf_io
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
6392ccecef example: simple: Update after removing struct ocf_io
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Michal Mielewczyk
f72b92211d Remove struct ocf_io
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
ff5c20b395 Redirect ocf_volume_submit_* operations to forward
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
be0ad8fe20 pyocf: Update tests after the API changes
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
c5741df0ed Bind ocf_io to ocf_request
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
7fb6b62825 Drop support for submit_* ops in backend volumes
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
39d566c280 Replace submit with forward in ocf_metadata_read_sb()
This one is quite special, because it can be called before cache is
instantiated, which means we can not allocate the request using
ocf_req_new_mngt() due to absence of mngt_queue. For that reason we
simply allocate request using env_zalloc() and then release it with
env_free(). The lifecycle of the request is very straightforward and
the only used fields are forward counter and callback.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
9404716c3c Replace submit with forward in metadata_raw_atomic
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
af3b379bb8 Replace submit with forward in metadata_io
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
29ca8fbbe4 Replace submit with forward in standby
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
322ae2687d Replace submit with forward in cleaner
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
834786866c Replace submit with forward in mngt
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
1c2d5bbcf3 Introduce forward_io_simple
It's intended to be used in a context, where cache is not initialized
and the io_queue is not available yet.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
1f26ceb563 composite: Add forward_io_simple support
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
2d303e8d09 Replace ocf_forward_get_io() with more specific ops
struct ocf_io is going to be removed soon (consolidated with ocf_request).

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
6aa141c247 Introduce ocf_forward_get_data()
Skip the ocf_io abstraction and get the data directly from the request.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
54f75ba492 Introduce ocf_req_forward_volume_*()
Those are meant to be used in context where no cache nor queue is
available (typically at very early stage of initialization). We reuse
cache_forward* callback and counter, because they will not be used
in this context anyway.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
07abdf5d8b composite: Add forward_metadata support
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
5859e432c8 Introduce ocf_forward_metadata()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
17144e5d32 composite: Add forward_write_zeros support
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
cd544e8ee5 Introduce ocf_forward_write_zeros()
This is meant to be used in atomic mode to avoid allocating huge buffers
for zeroing data on drive.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
c7580a75d7
Merge pull request #832 from rafalste/fix_debug_macros
Fix metadata debug macros
2024-09-20 13:59:34 +02:00
Rafal Stefanowski
c1dc688fb5 Fix metadata debug macros
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
2024-09-20 10:09:40 +02:00
Robert Baldyga
4d9bc6eaa1
Merge pull request #829 from mmichal10/d2c-improvement
D2C improvement
2024-09-20 07:56:06 +02:00
Robert Baldyga
7d53dd1e41 Handle D2C early and fast
Avoid unnecessary code execution in D2C mode.
Avoid multiple req->d2c check in normal I/O path.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 23:58:26 +02:00
Robert Baldyga
df280cf5ec
Merge pull request #828 from mmichal10/io_forward
Io forward pt.1
2024-09-19 19:42:49 +02:00
Robert Baldyga
10098ccedd Remove unused functions
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00
Robert Baldyga
1ed707361f Modify engines to use forward API
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00
Robert Baldyga
e667c10b4a example: Add forward ops to volume
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00
Robert Baldyga
c9cd217a08 pyocf: Update to use forward API
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00
Robert Baldyga
0cd2393aaf Implement forward ops in composite volume
Allow composite volume to forward the io to sub-volumes, splitting it
into several forward operations when needed. This is still done with
zero allocations, making forward even more efficient when combined with
composite volume.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00
Robert Baldyga
7e73de0d51 volume: Introduce general IO forward mechanism
Allow the core volume IOs to be forwarded directly to backend volumes to
avoid unnecessary allocations.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00