pyocf: add option to load cache without openning cores
... this is useful to workaround current pyocf limitations and
load cache with manual core insertion
@@ -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
