tests: pyocf: Remove legacy submit_* ops implementation from volumes

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
This commit is contained in:
Robert Baldyga 2023-12-22 00:01:41 +01:00 committed by Michal Mielewczyk
parent 9b7f476470
commit d8d750462a

View File

@ -109,35 +109,6 @@ class Volume:
if cls in Volume._ops_: if cls in Volume._ops_:
return Volume._ops_[cls] return Volume._ops_[cls]
@VolumeOps.SUBMIT_IO
def _submit_io(io):
io_structure = cast(io, POINTER(Io))
volume = Volume.get_instance(OcfLib.getInstance().ocf_io_get_volume(io_structure))
volume.submit_io(io_structure)
@VolumeOps.SUBMIT_FLUSH
def _submit_flush(flush):
io_structure = cast(flush, POINTER(Io))
volume = Volume.get_instance(OcfLib.getInstance().ocf_io_get_volume(io_structure))
volume.submit_flush(io_structure)
@VolumeOps.SUBMIT_METADATA
def _submit_metadata(meta):
raise NotImplementedError
@VolumeOps.SUBMIT_DISCARD
def _submit_discard(discard):
io_structure = cast(discard, POINTER(Io))
volume = Volume.get_instance(OcfLib.getInstance().ocf_io_get_volume(io_structure))
volume.submit_discard(io_structure)
@VolumeOps.SUBMIT_WRITE_ZEROES
def _submit_write_zeroes(write_zeroes):
raise NotImplementedError
@VolumeOps.FORWARD_IO @VolumeOps.FORWARD_IO
def _forward_io(volume, token, rw, addr, nbytes, offset): def _forward_io(volume, token, rw, addr, nbytes, offset):
Volume.get_instance(volume).forward_io(token, rw, addr, nbytes, offset) Volume.get_instance(volume).forward_io(token, rw, addr, nbytes, offset)
@ -194,11 +165,6 @@ class Volume:
return Volume.get_instance(ref).get_length() return Volume.get_instance(ref).get_length()
Volume._ops_[cls] = VolumeOps( Volume._ops_[cls] = VolumeOps(
_submit_io=_submit_io,
_submit_flush=_submit_flush,
_submit_metadata=_submit_metadata,
_submit_discard=_submit_discard,
_submit_write_zeroes=_submit_write_zeroes,
_forward_io=_forward_io, _forward_io=_forward_io,
_forward_flush=_forward_flush, _forward_flush=_forward_flush,
_forward_discard=_forward_discard, _forward_discard=_forward_discard,
@ -280,12 +246,6 @@ class Volume:
def get_max_io_size(self): def get_max_io_size(self):
raise NotImplementedError raise NotImplementedError
def do_submit_flush(self, flush):
raise NotImplementedError
def do_submit_discard(self, discard):
raise NotImplementedError
def get_stats(self): def get_stats(self):
return self.stats return self.stats
@ -295,9 +255,6 @@ class Volume:
def inc_stats(self, _dir): def inc_stats(self, _dir):
self.stats[_dir] += 1 self.stats[_dir] += 1
def do_submit_io(self, io):
raise NotImplementedError
def dump(self, offset=0, size=0, ignore=VOLUME_POISON, **kwargs): def dump(self, offset=0, size=0, ignore=VOLUME_POISON, **kwargs):
raise NotImplementedError raise NotImplementedError
@ -310,28 +267,6 @@ class Volume:
def online(self): def online(self):
self.is_online = True self.is_online = True
def _reject_io(self, io):
cast(io, POINTER(Io)).contents._end(io, -OcfErrorCode.OCF_ERR_IO)
def submit_flush(self, io):
if self.is_online:
self.do_submit_flush(io)
else:
self._reject_io(io)
def submit_io(self, io):
if self.is_online:
self.inc_stats(IoDir(io.contents._dir))
self.do_submit_io(io)
else:
self._reject_io(io)
def submit_discard(self, io):
if self.is_online:
self.do_submit_discard(io)
else:
self._reject_io(io)
def _reject_forward(self, token): def _reject_forward(self, token):
Io.forward_end(token, -OcfErrorCode.OCF_ERR_IO) Io.forward_end(token, -OcfErrorCode.OCF_ERR_IO)
@ -456,42 +391,6 @@ class RamVolume(Volume):
def get_max_io_size(self): def get_max_io_size(self):
return S.from_KiB(128) return S.from_KiB(128)
def do_submit_flush(self, flush):
flush.contents._end(flush, 0)
def do_submit_discard(self, discard):
try:
dst = self.data_ptr + discard.contents._addr
memset(dst, 0, discard.contents._bytes)
discard.contents._end(discard, 0)
except: # noqa E722
discard.contents._end(discard, -OcfErrorCode.OCF_ERR_NOT_SUPP)
def do_submit_io(self, io):
flags = int(io.contents._flags)
if flags & IoFlags.FLUSH:
self.do_submit_flush(io)
return
try:
offset = OcfLib.getInstance().ocf_io_get_offset(io)
if io.contents._dir == IoDir.WRITE:
src_ptr = cast(OcfLib.getInstance().ocf_io_get_data(io), c_void_p)
src = Data.get_instance(src_ptr.value).handle.value + offset
dst = self.data_ptr + io.contents._addr
elif io.contents._dir == IoDir.READ:
dst_ptr = cast(OcfLib.getInstance().ocf_io_get_data(io), c_void_p)
dst = Data.get_instance(dst_ptr.value).handle.value + offset
src = self.data_ptr + io.contents._addr
memmove(dst, src, io.contents._bytes)
io.contents._end(io, 0)
except: # noqa E722
io.contents._end(io, -OcfErrorCode.OCF_ERR_IO)
def do_forward_io(self, token, rw, addr, nbytes, offset): def do_forward_io(self, token, rw, addr, nbytes, offset):
try: try:
if rw == IoDir.WRITE: if rw == IoDir.WRITE:
@ -582,30 +481,6 @@ class ErrorDevice(Volume):
return not seq_no_match and not sector_match return not seq_no_match and not sector_match
def complete_submit_with_error(self, io):
self.error = True
direction = IoDir(io.contents._dir)
self.stats["errors"][direction] += 1
io.contents._end(io, -OcfErrorCode.OCF_ERR_IO)
def do_submit_io(self, io):
if self.should_forward_io(io.contents._dir, io.contents._addr):
self.vol.do_submit_io(io)
else:
self.complete_submit_with_error(io)
def do_submit_flush(self, io):
if self.data_only or self.should_forward_io(io.contents._dir, io.contents._addr):
self.vol.do_submit_flush(io)
else:
self.complete_submit_with_error(io)
def do_submit_discard(self, io):
if self.data_only or self.should_forward_io(io.contents._dir, io.contents._addr):
self.vol.do_submit_discard(io)
else:
self.complete_submit_with_error(io)
def complete_forward_with_error(self, token, rw=IoDir.WRITE): def complete_forward_with_error(self, token, rw=IoDir.WRITE):
self.error = True self.error = True
direction = IoDir(rw) direction = IoDir(rw)
@ -693,42 +568,6 @@ class TraceDevice(Volume):
return submit return submit
def do_submit_io(self, io):
submit = self._trace(
TraceDevice.IoType.Data,
io.contents._dir,
io.contents._addr,
io.contents._bytes,
io.contents._flags
)
if submit:
self.vol.do_submit_io(io)
def do_submit_flush(self, io):
submit = self._trace(
TraceDevice.IoType.Flush,
io.contents._dir,
io.contents._addr,
io.contents._bytes,
io.contents._flags
)
if submit:
self.vol.do_submit_flush(io)
def do_submit_discard(self, io):
submit = self._trace(
TraceDevice.IoType.Discard,
io.contents._dir,
io.contents._addr,
io.contents._bytes,
io.contents._flags
)
if submit:
self.vol.do_submit_discard(io)
def do_forward_io(self, token, rw, addr, nbytes, offset): def do_forward_io(self, token, rw, addr, nbytes, offset):
flags = lib.ocf_forward_get_flags(token) flags = lib.ocf_forward_get_flags(token)
submit = self._trace( submit = self._trace(