Commit Graph

1876 Commits

Author SHA1 Message Date
Rafal Stefanowski
7dfe70f69b Fix discard step callback refcount
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-10 15:20:51 +02:00
Robert Baldyga
070b16b31f
Merge pull request #819 from mmichal10/rename-ops
Rename engine_ops to engine_flush
2024-09-10 15:19:51 +02:00
Robert Baldyga
1bcd949a89 Rename engine_ops to engine_flush
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-10 15:16:33 +02:00
Robert Baldyga
fa8c28ca10
Merge pull request #818 from mmichal10/dont-flush-volatile-md
cleaner: skip metadata flush in volatile mode
2024-09-10 12:44:38 +02:00
Amir Haroush
7930ef9c21 cleaner: skip metadata flush in volatile mode
Signed-off-by: Amir Haroush <amir.haroush@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-10 12:32:25 +02:00
Robert Baldyga
bf679ecb49
Merge pull request #817 from mmichal10/env_ram_check
Unstubify RAM check in posix evn
2024-09-10 12:27:51 +02:00
Michal Mielewczyk
77d949bdcc Unstubify RAM check in posix evn
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-10 10:24:15 +02:00
Robert Baldyga
ebbf832cdc
Merge pull request #814 from mmichal10/debug-mechanism
Debug mechanism
2024-09-09 15:48:45 +02:00
Robert Baldyga
c07e44f036 pyocf: Fix cache settle
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-09 15:28:11 +02:00
Robert Baldyga
3ebdf38aa9 Introduce ocf_dbg_cache_is_settled()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-09 15:28:11 +02:00
Michal Mielewczyk
f4d9f0dcf6 Introduce ocf_refcnt_zeroed()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-09 15:28:09 +02:00
Robert Baldyga
1fbb00de8f
Merge pull request #811 from mmichal10/req-rewrq
Request improvements
2024-09-09 14:37:03 +02:00
Robert Baldyga
dc58eeae9b Introduce d2c request
This avoids unnecessary map allocation and initialization of unused fields of
request structure. It also allows to track thier number separately from
the regular requests

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-09 12:45:51 +02:00
Robert Baldyga
8b93b699c3 Eliminate queue -> cache mapping
Eliminate need to resolve cache based on the queue. This allows to share
the queue between cache instances. The queue still holds pointer to
a cache that owns the queue, but no management or io path relies on the
queue -> cache mapping.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-09 12:45:51 +02:00
Robert Baldyga
460cd461d3 Allocate requests for management path separately
Management path does not benefit much from mpools, as number of requests
allocated is very small. It's less restrictive (mngt_queue does not have
single-CPU affinity) thus avoiding mpool usage in management path allows
to introduce additional restrictions on mpool, leading to I/O performance
improvement.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-09 12:45:51 +02:00
Robert Baldyga
6cd5a27ea9
Merge pull request #812 from Kamoppl/kamilg/fix_tj_actions
github-actions: update checkout version
2024-09-09 12:39:31 +02:00
Kamil Gierszewski
0f60163a46
github-actions: update checkout version
Signed-off-by: Kamil Gierszewski <kamil.gierszewski@huawei.com>
2024-09-09 12:29:01 +02:00
Robert Baldyga
bfd28af1cc
Merge pull request #781 from Open-CAS/dependabot/github_actions/dot-github/workflows/tj-actions/changed-files-41
build(deps): bump tj-actions/changed-files from 18.2 to 41 in /.github/workflows
2024-09-09 11:19:04 +02:00
Robert Baldyga
193410e7b2
Merge pull request #810 from mmichal10/pt-stats
Introduce pass-through block stats
2024-09-06 15:33:23 +02:00
Sara Merzel
835eb708b5 Introduce pass-through block stats
Signed-off-by: Sara Merzel <sara.merzel@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-06 14:47:02 +02:00
Robert Baldyga
3ebf6e64c1
Merge pull request #808 from mmichal10/vol_and_req_fixes
Volume improvements
2024-09-06 14:24:48 +02:00
Robert Baldyga
5a1f6f1f8a
Merge pull request #809 from robertbaldyga/ram-needed-no-fail
Modify ocf_mngt_get_ram_needed to never fail
2024-09-06 14:20:24 +02:00
Amir Haroush
ed62866324 Modify ocf_mngt_get_ram_needed to never fail
Signed-off-by: Amir Haroush <amir.haroush@huawei.com>
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-05 15:41:54 +02:00
Gershon Geva
2096e34489 Pass user's params when opening a core volume
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-04 20:29:41 +02:00
Robert Baldyga
87b16aef6a Do not deinit user volume
The user is supposed to deinit/destroy it.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-03 16:10:56 +02:00
Robert Baldyga
3d99a2c938 Add missing ocf_volume_init() calls
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-03 16:10:56 +02:00
Robert Baldyga
8aa2d0fb63 Remove unused attach context property
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-03 16:10:56 +02:00
Robert Baldyga
01902e1206
Merge pull request #807 from mmichal10/parallelize-fixes
Parallelize fixes
2024-09-03 12:49:54 +02:00
Robert Baldyga
5e6a90a293 parallelize: Fix race condition
In situation when all the shards finish their work before parallelize
loop does it's final loop condition check, which involves access to
parallelize object, it's possible that parallelize object will be
deinitialized before this final access.

Increasing refcount by 1 before running parallelize and decreasing it
only after the loop is finished addresses this problem.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-02 12:22:11 +02:00
Robert Baldyga
55b99518ed parallelize: Create number of shards requested by user
In some scenarios running the exact number of shards, regardless of
number of available queues is crucial for correctness of operation.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-02 12:22:11 +02:00
Robert Baldyga
5c714cb3de parallelize: Use mngt_queue only as a fallback
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-02 12:22:11 +02:00
Robert Baldyga
83d5642547
Merge pull request #806 from mmichal10/deffered-miss
Count deferred requests as full miss
2024-09-02 12:18:31 +02:00
Michael Lyulko
470204ac70 Count deferred requests as full miss
Otherwise, it may increase the number of hits, while the overall performance
has not been improved. This way, the hit rate is more correlated with
the performance changes.

Signed-off-by: Michael Lyulko <michael.lyulko@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-02 09:21:28 +02:00
Robert Baldyga
35bf43b2e5
Merge pull request #805 from mmichal10/locking-fixes
Locking and queue improvements
2024-08-30 11:03:58 +02:00
Michal Mielewczyk
53756e81be Queue visitor API
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 10:45:57 +02:00
Robert Baldyga
b00ab08473 Introduce io_queues_lock
The queues can be created and destroyed dynamically at any point in
the cache lifetime, and this can happen from different execution contexts,
thus there is a need to protect the queue_list with a lock.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 10:45:36 +02:00
Robert Baldyga
8db93260ae Avoid adding mngt_queue to io_queues list
Previously every created queue was added to io_queues list, which
made mngt_queue being used in ocf_parallelize. Change mngt_queue creation
API so that mngt_queue is not added to the list and doesn't have
unnecessary functionalities initialized.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 10:45:26 +02:00
Michael Lyulko
1d903f4038 Fix debug stats compilation
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 10:16:26 +02:00
Michal Mielewczyk
0a9a173f33 Add missing flush_mutext destroy
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 10:15:08 +02:00
Michal Mielewczyk
2221a7bdf8 Add missing cache lock deinit
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 09:52:05 +02:00
Michal Mielewczyk
28f679cc91 Add missing cache unlock
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 09:52:05 +02:00
Michal Mielewczyk
a542cfa690 Refactor cache_trylock()
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 09:52:05 +02:00
Robert Baldyga
421d3f03ea
Merge pull request #804 from mmichal10/pytest-fixes
(Mostly) pyocf fixes
2024-08-29 09:36:58 +02:00
Michael Lyulko
59227999da pyocf: fix standby detach completion
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:39:55 +02:00
Robert Baldyga
640ee86663 pyocf: Introduce discard tests
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:39:55 +02:00
Roel Apfelbaum
9f0147ab1e pyocf: refactor sync io operations
Replace the pattern:
	completion = OcfCompletion([("err", c_int)])
	io.callback = completion.callback
	io.submit()
	completion.wait()
with:
	completion = Sync(io).submit()
Also, remove some redundant imports.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:39:53 +02:00
Robert Baldyga
8d4661bdc9 pyocf: rio: Introduce copy()
This allows to create a Rio prototype object and the copy it for every
invocations so that some parameters can be overwritten without modifying
the prototype object itself.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:29:43 +02:00
Robert Baldyga
d892e3b0d5 pyocf: rio: Fix offset
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:29:42 +02:00
Michal Mielewczyk
16830cd3c3 pyocf: rio: Fix the default JobSpec
Make JobSpec dataclass' default values immutable.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:29:10 +02:00
Robert Baldyga
8668ae9c37 pyocf: Fix test_io_propagation_multiple_subvolumes
Make sure end_offset is never generated as 0. Otherwise the last volume
in the range will not get any io, leading false negative test result.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:28:13 +02:00