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:
@@ -435,7 +435,8 @@ void cleaning_policy_acp_populate(ocf_cache_t cache,
|
||||
|
||||
result = ocf_parallelize_create(¶llelize, 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;
|
||||
|
@@ -547,7 +547,8 @@ void cleaning_policy_alru_populate(ocf_cache_t cache,
|
||||
|
||||
result = ocf_parallelize_create(¶llelize, 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;
|
||||
|
Reference in New Issue
Block a user