Make open_cores load viable by adding getter for cores
Signed-off-by: Jan Musial <jan.musial@intel.com>
This commit is contained in:
parent
53d2c5a197
commit
973a474b37
@ -38,6 +38,7 @@ from .stats.cache import CacheInfo
|
||||
from .ioclass import IoClassesInfo, IoClassInfo
|
||||
from .stats.shared import UsageStats, RequestsStats, BlocksStats, ErrorsStats
|
||||
from .ctx import OcfCtx
|
||||
from .volume import Volume
|
||||
|
||||
|
||||
class Backfill(Structure):
|
||||
@ -593,6 +594,27 @@ class Cache:
|
||||
def write_unlock(self):
|
||||
self.owner.lib.ocf_mngt_cache_unlock(self.cache_handle)
|
||||
|
||||
def get_core_by_name(self, name: str):
|
||||
core_handle = c_void_p()
|
||||
|
||||
result = self.owner.lib.ocf_core_get_by_name(
|
||||
self.cache_handle,
|
||||
name.encode("ascii"),
|
||||
len(name),
|
||||
byref(core_handle),
|
||||
)
|
||||
if result != 0:
|
||||
raise OcfError("Failed getting core by name", result)
|
||||
|
||||
uuid = self.owner.lib.ocf_core_get_uuid_wrapper(core_handle)
|
||||
device = Volume.get_by_uuid(uuid.contents._data.decode("ascii"))
|
||||
core = Core(device)
|
||||
core.cache = self
|
||||
core.handle = core_handle
|
||||
self.cores.append(core)
|
||||
|
||||
return core
|
||||
|
||||
def add_core(self, core: Core, try_add=False):
|
||||
cfg = core.get_config()
|
||||
|
||||
@ -741,6 +763,11 @@ class Cache:
|
||||
self.mngt_queue.put()
|
||||
del self.io_queues[:]
|
||||
|
||||
self.started = False
|
||||
for core in self.cores:
|
||||
core.cache = None
|
||||
core.handle = None
|
||||
|
||||
self.write_unlock()
|
||||
self.device = None
|
||||
self.started = False
|
||||
|
@ -19,6 +19,7 @@ from ctypes import (
|
||||
cast,
|
||||
byref,
|
||||
create_string_buffer,
|
||||
POINTER,
|
||||
)
|
||||
from datetime import timedelta
|
||||
|
||||
@ -58,7 +59,6 @@ class Core:
|
||||
def __init__(
|
||||
self,
|
||||
device: Volume,
|
||||
try_add: bool,
|
||||
name: str = "core",
|
||||
seq_cutoff_threshold: int = DEFAULT_SEQ_CUTOFF_THRESHOLD,
|
||||
seq_cutoff_promotion_count: int = DEFAULT_SEQ_CUTOFF_PROMOTION_COUNT,
|
||||
@ -73,7 +73,7 @@ class Core:
|
||||
|
||||
@classmethod
|
||||
def using_device(cls, device, **kwargs):
|
||||
c = cls(device=device, try_add=False, **kwargs)
|
||||
c = cls(device=device, **kwargs)
|
||||
|
||||
return c
|
||||
|
||||
@ -222,6 +222,8 @@ 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,
|
||||
|
Loading…
Reference in New Issue
Block a user