Merge pull request #111 from imjfckm/master

Stop using mgmt queue for IO in pyocf
This commit is contained in:
Adam Rutkowski 2019-04-10 06:06:45 -04:00 committed by GitHub
commit aad1c05aee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -136,7 +136,7 @@ class Cache:
self.io_queues = []
def start_cache(
self, mngt_queue: Queue = None, use_mngt_queue_for_io: bool = True
self, default_io_queue: Queue = None, mngt_queue: Queue = None,
):
status = self.owner.lib.ocf_mngt_cache_start(
self.owner.ctx_handle, byref(self.cache_handle), byref(self.cfg)
@ -144,13 +144,15 @@ class Cache:
if status:
raise OcfError("Creating cache instance failed", status)
self.owner.caches += [self]
self.name = self.owner.lib.ocf_cache_get_name(self)
self.mngt_queue = mngt_queue or Queue(
self, "mgmt-{}".format(self.name), mngt_queue=True
self, "mgmt-{}".format(self.get_name()), mngt_queue=True
)
if use_mngt_queue_for_io:
self.io_queues += [self.mngt_queue]
if default_io_queue:
self.io_queues += [default_io_queue]
else:
self.io_queues += [Queue(self, "default-io-{}".format(self.get_name()))]
status = self.owner.lib.ocf_mngt_cache_set_mngt_queue(
self, self.mngt_queue
@ -213,6 +215,7 @@ class Cache:
@classmethod
def load_from_device(cls, device, name=""):
c = cls(name=name, owner=device.owner)
c.start_cache()
c.load_cache(device)
return c
@ -419,7 +422,18 @@ class Cache:
self.put_and_write_unlock()
def get_name(self):
self.get_and_read_lock()
try:
return str(self.owner.lib.ocf_cache_get_name(self), encoding="ascii")
except:
raise OcfError("Couldn't get cache name")
finally:
self.put_and_read_unlock()
lib = OcfLib.getInstance()
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