def _io_to_core(exported_obj: Core, data: Data): io = exported_obj.new_io(exported_obj.cache.get_default_queue(), 0, data.size, IoDir.WRITE, 0, 0) io.set_data(data) completion = OcfCompletion([("err", c_int)]) io.callback = completion.callback io.submit() completion.wait() assert completion.results["err"] == 0, "IO to exported object completion"
def io_to_core(exported_obj: Core, data: Data, offset: int, to_core_device=False): io = exported_obj.new_core_io() if to_core_device else exported_obj.new_io() io.set_data(data) io.configure(offset, data.size, IoDir.WRITE, 0, 0) io.set_queue(exported_obj.cache.get_default_queue()) completion = OcfCompletion([("err", c_int)]) io.callback = completion.callback io.submit() completion.wait() assert completion.results["err"] == 0, "IO to exported object completion"
def io_from_exported_object(exported_obj: Core, buffer_size: int, offset: int): read_buffer = Data(buffer_size) io = exported_obj.new_io(exported_obj.cache.get_default_queue(), offset, read_buffer.size, IoDir.READ, 0, 0) io.set_data(read_buffer) completion = OcfCompletion([("err", c_int)]) io.callback = completion.callback io.submit() completion.wait() assert completion.results["err"] == 0, "IO from exported object completion" return read_buffer
def send_io(exported_obj: Core, data: Data, addr: int = 0, target_ioclass: int = 0): io = exported_obj.new_io( exported_obj.cache.get_default_queue(), addr, data.size, IoDir.WRITE, target_ioclass, 0, ) io.set_data(data) completion = OcfCompletion([("err", c_int)]) io.callback = completion.callback io.submit() completion.wait() assert completion.results["err"] == 0, "IO to exported object completion"