pyocf: add option to load cache without openning cores

... this is useful to workaround current pyocf limitations and
load cache with manual core insertion

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
Adam Rutkowski 2021-12-16 18:27:30 +01:00
parent 58dac85f7b
commit 683174c78f

View File

@ -426,7 +426,12 @@ class Cache:
raise OcfError("Error adding partition to cache", status)
def configure_device(
self, device, force=False, perform_test=True, cache_line_size=None
self,
device,
force=False,
perform_test=True,
cache_line_size=None,
open_cores=True,
):
self.device = device
self.device_name = device.uuid
@ -448,15 +453,22 @@ class Cache:
_cache_line_size=cache_line_size
if cache_line_size
else self.cache_line_size,
_open_cores=True,
_open_cores=open_cores,
_force=force,
_discard_on_start=False,
)
def attach_device(
self, device, force=False, perform_test=False, cache_line_size=None
self,
device,
force=False,
perform_test=False,
cache_line_size=None,
open_cores=True,
):
self.configure_device(device, force, perform_test, cache_line_size)
self.configure_device(
device, force, perform_test, cache_line_size, open_cores=open_cores
)
self.write_lock()
c = OcfCompletion([("cache", c_void_p), ("priv", c_void_p), ("error", c_int)])
@ -484,8 +496,8 @@ class Cache:
if c.results["error"]:
raise OcfError("Attaching cache device failed", c.results["error"])
def load_cache(self, device):
self.configure_device(device)
def load_cache(self, device, open_cores=True):
self.configure_device(device, open_cores=open_cores)
c = OcfCompletion([("cache", c_void_p), ("priv", c_void_p), ("error", c_int)])
device.owner.lib.ocf_mngt_cache_load(
self.cache_handle, byref(self.dev_cfg), c, None
@ -496,12 +508,12 @@ class Cache:
raise OcfError("Loading cache device failed", c.results["error"])
@classmethod
def load_from_device(cls, device, name="cache"):
def load_from_device(cls, device, name="cache", open_cores=True):
c = cls(name=name, owner=device.owner)
c.start_cache()
try:
c.load_cache(device)
c.load_cache(device, open_cores=open_cores)
except: # noqa E722
c.stop()
raise