Merge pull request #770 from robertbaldyga/fix-priv-alignment
Fix alignment of private data in parallelize & pipeline
This commit is contained in:
commit
f3878a86e1
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright(c) 2012-2022 Intel Corporation
|
||||
* Copyright(c) 2023 Huawei Technologies
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
@ -9,6 +10,8 @@
|
||||
#include "../ocf_request.h"
|
||||
#include "utils_parallelize.h"
|
||||
|
||||
#define OCF_PARALLELIZE_ALIGNMENT 64
|
||||
|
||||
struct ocf_parallelize {
|
||||
ocf_cache_t cache;
|
||||
ocf_parallelize_handle_t handle;
|
||||
@ -65,12 +68,15 @@ int ocf_parallelize_create(ocf_parallelize_t *parallelize,
|
||||
prl_size = sizeof(*tmp_parallelize) +
|
||||
shards_cnt * sizeof(*tmp_parallelize->reqs);
|
||||
|
||||
tmp_parallelize = env_vzalloc(prl_size + priv_size);
|
||||
tmp_parallelize = env_vzalloc(prl_size + priv_size + OCF_PARALLELIZE_ALIGNMENT);
|
||||
if (!tmp_parallelize)
|
||||
return -OCF_ERR_NO_MEM;
|
||||
|
||||
if (priv_size > 0)
|
||||
tmp_parallelize->priv = (void *)tmp_parallelize + prl_size;
|
||||
if (priv_size > 0) {
|
||||
uintptr_t priv = (uintptr_t)tmp_parallelize + prl_size;
|
||||
priv = OCF_DIV_ROUND_UP(priv, OCF_PARALLELIZE_ALIGNMENT) * OCF_PARALLELIZE_ALIGNMENT;
|
||||
tmp_parallelize->priv = (void*)priv;
|
||||
}
|
||||
|
||||
tmp_parallelize->cache = cache;
|
||||
tmp_parallelize->handle = handle;
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright(c) 2019-2022 Intel Corporation
|
||||
* Copyright(c) 2023 Huawei Technologies
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
@ -9,6 +10,8 @@
|
||||
#include "../ocf_request.h"
|
||||
#include "utils_pipeline.h"
|
||||
|
||||
#define OCF_PIPELINE_ALIGNMENT 64
|
||||
|
||||
struct ocf_pipeline {
|
||||
struct ocf_pipeline_properties *properties;
|
||||
struct ocf_request *req;
|
||||
@ -74,13 +77,14 @@ int ocf_pipeline_create(ocf_pipeline_t *pipeline, ocf_cache_t cache,
|
||||
struct ocf_request *req;
|
||||
|
||||
tmp_pipeline = env_vzalloc(sizeof(*tmp_pipeline) +
|
||||
properties->priv_size);
|
||||
properties->priv_size + OCF_PIPELINE_ALIGNMENT);
|
||||
if (!tmp_pipeline)
|
||||
return -OCF_ERR_NO_MEM;
|
||||
|
||||
if (properties->priv_size > 0) {
|
||||
tmp_pipeline->priv = (void *)tmp_pipeline +
|
||||
sizeof(*tmp_pipeline);
|
||||
uintptr_t priv = (uintptr_t)tmp_pipeline + sizeof(*tmp_pipeline);
|
||||
priv = OCF_DIV_ROUND_UP(priv, OCF_PIPELINE_ALIGNMENT) * OCF_PIPELINE_ALIGNMENT;
|
||||
tmp_pipeline->priv = (void *)priv;
|
||||
}
|
||||
|
||||
req = ocf_req_new(cache->mngt_queue, NULL, 0, 0, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user