pyocf: Volume not to inherit from ctypes.Structure

Volume object is never referenced from C code, so there
is no need to inherit from ctypes.Structure.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
Adam Rutkowski 2021-10-18 21:08:33 +02:00
parent 9975706488
commit 062f63e4ff

View File

@ -1,5 +1,5 @@
# #
# Copyright(c) 2019-2021 Intel Corporation # Copyright(c) 2019-2022 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause # SPDX-License-Identifier: BSD-3-Clause
# #
@ -77,9 +77,7 @@ class VolumeIoPriv(Structure):
VOLUME_POISON = 0x13 VOLUME_POISON = 0x13
class Volume(Structure): class Volume():
_fields_ = [("_storage", c_void_p)]
_instances_ = weakref.WeakValueDictionary() _instances_ = weakref.WeakValueDictionary()
_uuid_ = weakref.WeakValueDictionary() _uuid_ = weakref.WeakValueDictionary()
@ -101,7 +99,7 @@ class Volume(Structure):
self.data = create_string_buffer(int(self.size)) self.data = create_string_buffer(int(self.size))
memset(self.data, VOLUME_POISON, self.size) memset(self.data, VOLUME_POISON, self.size)
self._storage = cast(self.data, c_void_p) self.data_ptr = cast(self.data, c_void_p).value
self.reset_stats() self.reset_stats()
self.opened = False self.opened = False
@ -262,7 +260,7 @@ class Volume(Structure):
self.size = size self.size = size
self.data = create_string_buffer(int(self.size)) self.data = create_string_buffer(int(self.size))
memset(self.data, VOLUME_POISON, self.size) memset(self.data, VOLUME_POISON, self.size)
self._storage = cast(self.data, c_void_p) self.data_ptr = cast(self.data, c_void_p).value
def get_max_io_size(self): def get_max_io_size(self):
return S.from_KiB(128) return S.from_KiB(128)
@ -272,7 +270,7 @@ class Volume(Structure):
def submit_discard(self, discard): def submit_discard(self, discard):
try: try:
dst = self._storage + discard.contents._addr dst = self.data_ptr + discard.contents._addr
memset(dst, 0, discard.contents._bytes) memset(dst, 0, discard.contents._bytes)
discard.contents._end(discard, 0) discard.contents._end(discard, 0)
@ -296,11 +294,11 @@ class Volume(Structure):
if io.contents._dir == IoDir.WRITE: if io.contents._dir == IoDir.WRITE:
src_ptr = cast(OcfLib.getInstance().ocf_io_get_data(io), c_void_p) src_ptr = cast(OcfLib.getInstance().ocf_io_get_data(io), c_void_p)
src = Data.get_instance(src_ptr.value).handle.value + offset src = Data.get_instance(src_ptr.value).handle.value + offset
dst = self._storage + io.contents._addr dst = self.data_ptr + io.contents._addr
elif io.contents._dir == IoDir.READ: elif io.contents._dir == IoDir.READ:
dst_ptr = cast(OcfLib.getInstance().ocf_io_get_data(io), c_void_p) dst_ptr = cast(OcfLib.getInstance().ocf_io_get_data(io), c_void_p)
dst = Data.get_instance(dst_ptr.value).handle.value + offset dst = Data.get_instance(dst_ptr.value).handle.value + offset
src = self._storage + io.contents._addr src = self.data_ptr + io.contents._addr
memmove(dst, src, io.contents._bytes) memmove(dst, src, io.contents._bytes)
io_priv.contents._offset += io.contents._bytes io_priv.contents._offset += io.contents._bytes
@ -313,15 +311,15 @@ class Volume(Structure):
if size == 0: if size == 0:
size = int(self.size) - int(offset) size = int(self.size) - int(offset)
print_buffer(self._storage, size, ignore=ignore, **kwargs) print_buffer(self.data_ptr, size, ignore=ignore, **kwargs)
def md5(self): def md5(self):
m = md5() m = md5()
m.update(string_at(self._storage, self.size)) m.update(string_at(self.data_ptr, self.size))
return m.hexdigest() return m.hexdigest()
def get_bytes(self): def get_bytes(self):
return string_at(self._storage, self.size) return string_at(self.data_ptr, self.size)
class ErrorDevice(Volume): class ErrorDevice(Volume):