pyocf: extend metadata helpers
Signed-off-by: Jan Musial <jan.musial@intel.com>
This commit is contained in:
parent
6193530415
commit
3f777ea1cf
@ -9,19 +9,50 @@
|
|||||||
#include "../src/ocf/metadata/metadata_raw.h"
|
#include "../src/ocf/metadata/metadata_raw.h"
|
||||||
#include "../src/ocf/metadata/metadata_internal.h"
|
#include "../src/ocf/metadata/metadata_internal.h"
|
||||||
|
|
||||||
// get collision metadata segment start and size (excluding padding)
|
uint64_t ocf_get_metadata_segment_start_page(ocf_cache_t cache, int segment)
|
||||||
uint64_t ocf_get_collision_start_page_helper(ocf_cache_t cache)
|
|
||||||
{
|
{
|
||||||
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
||||||
struct ocf_metadata_raw *raw = &ctrl->raw_desc[metadata_segment_collision];
|
struct ocf_metadata_raw *raw = &ctrl->raw_desc[segment];
|
||||||
|
|
||||||
return raw->ssd_pages_offset;
|
return raw->ssd_pages_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t ocf_get_collision_page_count_helper(ocf_cache_t cache)
|
uint64_t ocf_get_metadata_segment_page_count(ocf_cache_t cache, int segment)
|
||||||
{
|
{
|
||||||
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
||||||
struct ocf_metadata_raw *raw = &ctrl->raw_desc[metadata_segment_collision];
|
struct ocf_metadata_raw *raw = &ctrl->raw_desc[segment];
|
||||||
|
|
||||||
return raw->ssd_pages;
|
return raw->ssd_pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t ocf_get_metadata_segment_elems_count(ocf_cache_t cache, int segment)
|
||||||
|
{
|
||||||
|
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
||||||
|
struct ocf_metadata_raw *raw = &ctrl->raw_desc[segment];
|
||||||
|
|
||||||
|
return raw->entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t ocf_get_metadata_segment_elems_per_page(ocf_cache_t cache, int segment)
|
||||||
|
{
|
||||||
|
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
||||||
|
struct ocf_metadata_raw *raw = &ctrl->raw_desc[segment];
|
||||||
|
|
||||||
|
return raw->entries_in_page;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t ocf_get_metadata_segment_elem_size(ocf_cache_t cache, int segment)
|
||||||
|
{
|
||||||
|
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
||||||
|
struct ocf_metadata_raw *raw = &ctrl->raw_desc[segment];
|
||||||
|
|
||||||
|
return raw->entry_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ocf_get_metadata_segment_is_flapped(ocf_cache_t cache, int segment)
|
||||||
|
{
|
||||||
|
struct ocf_metadata_ctrl *ctrl = cache->metadata.priv;
|
||||||
|
struct ocf_metadata_raw *raw = &ctrl->raw_desc[segment];
|
||||||
|
|
||||||
|
return raw->flapping;
|
||||||
|
}
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright(c) 2022-2022 Intel Corporation
|
* Copyright(c) 2022 Intel Corporation
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
uint64_t ocf_get_collision_start_page_helper(ocf_cache_t cache);
|
uint64_t ocf_get_metadata_segment_start_page(ocf_cache_t cache, int segment);
|
||||||
uint64_t ocf_get_collision_page_count_helper(ocf_cache_t cache);
|
uint64_t ocf_get_metadata_segment_page_count(ocf_cache_t cache, int segment);
|
||||||
|
uint64_t ocf_get_metadata_segment_elems_count(ocf_cache_t cache, int segment);
|
||||||
|
uint64_t ocf_get_metadata_segment_elems_per_page(ocf_cache_t cache, int segment);
|
||||||
|
uint64_t ocf_get_metadata_segment_elem_size(ocf_cache_t cache, int segment);
|
||||||
|
bool ocf_get_metadata_segment_is_flapped(ocf_cache_t cache, int segment);
|
||||||
|
@ -6,11 +6,31 @@
|
|||||||
from .ocf import OcfLib
|
from .ocf import OcfLib
|
||||||
|
|
||||||
|
|
||||||
def get_collision_segment_page_location(cache):
|
def get_metadata_segment_page_location(cache, segment):
|
||||||
lib = OcfLib.getInstance()
|
lib = OcfLib.getInstance()
|
||||||
return int(lib.ocf_get_collision_start_page_helper(cache))
|
return int(lib.ocf_get_metadata_segment_start_page(cache, segment))
|
||||||
|
|
||||||
|
|
||||||
def get_collision_segment_size(cache):
|
def get_metadata_segment_size(cache, segment):
|
||||||
lib = OcfLib.getInstance()
|
lib = OcfLib.getInstance()
|
||||||
return int(lib.ocf_get_collision_page_count_helper(cache))
|
return int(lib.ocf_get_metadata_segment_page_count(cache, segment))
|
||||||
|
|
||||||
|
|
||||||
|
def get_metadata_segment_elems_count(cache, segment):
|
||||||
|
lib = OcfLib.getInstance()
|
||||||
|
return int(lib.ocf_get_metadata_segment_elems_count(cache, segment))
|
||||||
|
|
||||||
|
|
||||||
|
def get_metadata_segment_elems_per_page(cache, segment):
|
||||||
|
lib = OcfLib.getInstance()
|
||||||
|
return int(lib.ocf_get_metadata_segment_elems_per_page(cache, segment))
|
||||||
|
|
||||||
|
|
||||||
|
def get_metadata_segment_elem_size(cache, segment):
|
||||||
|
lib = OcfLib.getInstance()
|
||||||
|
return int(lib.ocf_get_metadata_segment_elem_size(cache, segment))
|
||||||
|
|
||||||
|
|
||||||
|
def get_metadata_segment_is_flapped(cache, segment):
|
||||||
|
lib = OcfLib.getInstance()
|
||||||
|
return bool(lib.ocf_get_metadata_segment_is_flapped(cache, segment))
|
||||||
|
@ -8,16 +8,13 @@ from datetime import timedelta
|
|||||||
|
|
||||||
from pyocf.types.volume import RamVolume
|
from pyocf.types.volume import RamVolume
|
||||||
from pyocf.types.volume_cache import CacheVolume
|
from pyocf.types.volume_cache import CacheVolume
|
||||||
from pyocf.types.cache import Cache
|
from pyocf.types.cache import Cache, CacheMetadataSegment
|
||||||
from pyocf.types.queue import Queue
|
from pyocf.types.queue import Queue
|
||||||
from pyocf.utils import Size
|
from pyocf.utils import Size
|
||||||
from pyocf.types.shared import CacheLineSize
|
from pyocf.types.shared import CacheLineSize
|
||||||
from pyocf.types.ctx import OcfCtx
|
from pyocf.types.ctx import OcfCtx
|
||||||
from pyocf.rio import Rio, ReadWrite
|
from pyocf.rio import Rio, ReadWrite
|
||||||
from pyocf.helpers import (
|
from pyocf.helpers import get_metadata_segment_page_location, get_metadata_segment_size
|
||||||
get_collision_segment_page_location,
|
|
||||||
get_collision_segment_size,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("cacheline_size", CacheLineSize)
|
@pytest.mark.parametrize("cacheline_size", CacheLineSize)
|
||||||
@ -71,8 +68,8 @@ def test_test_standby_io_metadata(pyocf_ctx, cacheline_size):
|
|||||||
|
|
||||||
cache.standby_attach(cache_vol)
|
cache.standby_attach(cache_vol)
|
||||||
|
|
||||||
start = get_collision_segment_page_location(cache)
|
start = get_metadata_segment_page_location(cache, CacheMetadataSegment.COLLISION)
|
||||||
count = get_collision_segment_size(cache)
|
count = get_metadata_segment_size(cache, CacheMetadataSegment.COLLISION)
|
||||||
io_offset = Size.from_page(start)
|
io_offset = Size.from_page(start)
|
||||||
io_size = Size.from_page(count)
|
io_size = Size.from_page(count)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user