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>
This commit is contained in:
Rafal Stefanowski
2024-09-23 12:13:33 +02:00
parent d8994e886e
commit 97ee3af8f7
7 changed files with 15 additions and 9 deletions

View File

@@ -435,7 +435,8 @@ void cleaning_policy_acp_populate(ocf_cache_t cache,
result = ocf_parallelize_create(&parallelize, cache,
OCF_ACP_POPULATE_SHARDS_CNT, sizeof(*context),
ocf_acp_populate_handle, ocf_acp_populate_finish);
ocf_acp_populate_handle, ocf_acp_populate_finish,
true);
if (result) {
cmpl(priv, result);
return;

View File

@@ -547,7 +547,8 @@ void cleaning_policy_alru_populate(ocf_cache_t cache,
result = ocf_parallelize_create(&parallelize, cache,
OCF_ALRU_POPULATE_SHARDS_CNT, sizeof(*context),
ocf_alru_populate_handle, ocf_alru_populate_finish);
ocf_alru_populate_handle, ocf_alru_populate_finish,
true);
if (result) {
cmpl(priv, result);
return;