pyocf: implement get_(front_)volume() in Cache and Core

This common interface is later going to be used for generic code
implementing cache/core exported object I/O.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
Adam Rutkowski 2022-03-07 15:50:56 +01:00
parent 2672f5460a
commit e0c762387c
2 changed files with 19 additions and 2 deletions

View File

@ -35,12 +35,12 @@ from ..utils import Size, struct_to_dict
from .core import Core
from .queue import Queue
from .stats.cache import CacheInfo
from .io import IoDir
from .ioclass import IoClassesInfo, IoClassInfo
from .stats.shared import UsageStats, RequestsStats, BlocksStats, ErrorsStats
from .ctx import OcfCtx
from .volume import RamVolume
class Backfill(Structure):
_fields_ = [("_max_queue_size", c_uint32), ("_queue_unblock_size", c_uint32)]
@ -655,6 +655,12 @@ class Cache:
self.cores.remove(core)
def get_front_volume(self):
return Volume.get_instance(lib.ocf_cache_get_front_volume(self.cache_handle))
def get_volume(self):
return Volume.get_instance(lib.ocf_cache_get_volume(self.cache_handle))
def get_stats(self):
cache_info = CacheInfo()
usage = UsageStats()
@ -803,6 +809,10 @@ lib.ocf_mngt_cache_remove_core.argtypes = [c_void_p, c_void_p, c_void_p]
lib.ocf_mngt_cache_add_core.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p]
lib.ocf_cache_get_name.argtypes = [c_void_p]
lib.ocf_cache_get_name.restype = c_char_p
lib.ocf_cache_get_front_volume.argtypes = [c_void_p]
lib.ocf_cache_get_front_volume.restype = c_void_p
lib.ocf_cache_get_volume.argtypes = [c_void_p]
lib.ocf_cache_get_volume.restype = c_void_p
lib.ocf_mngt_cache_cleaning_set_policy.argtypes = [
c_void_p,
c_uint32,

View File

@ -114,6 +114,12 @@ class Core:
return Io.from_pointer(io)
def get_front_volume(self):
return Volume.get_instance(lib.ocf_core_get_front_volume(self.handle))
def get_volume(self):
return Volume.get_instance(lib.ocf_core_get_volume(self.handle))
def new_core_io(
self, queue: Queue, addr: int, length: int, direction: IoDir,
io_class: int, flags: int
@ -227,7 +233,6 @@ class Core:
lib = OcfLib.getInstance()
lib.ocf_core_get_uuid_wrapper.restype = POINTER(Uuid)
lib.ocf_core_get_uuid_wrapper.argtypes = [c_void_p]
lib.ocf_core_get_volume.restype = c_void_p
lib.ocf_volume_new_io.argtypes = [
c_void_p,
c_void_p,
@ -240,6 +245,8 @@ lib.ocf_volume_new_io.argtypes = [
lib.ocf_volume_new_io.restype = c_void_p
lib.ocf_core_get_volume.argtypes = [c_void_p]
lib.ocf_core_get_volume.restype = c_void_p
lib.ocf_core_get_front_volume.argtypes = [c_void_p]
lib.ocf_core_get_front_volume.restype = c_void_p
lib.ocf_mngt_core_set_seq_cutoff_policy.argtypes = [c_void_p, c_uint32]
lib.ocf_mngt_core_set_seq_cutoff_policy.restype = c_int
lib.ocf_mngt_core_set_seq_cutoff_threshold.argtypes = [c_void_p, c_uint32]