def _io_to_core(vol: Volume, queue: Queue, data: Data): io = vol.new_io(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_from_exported_object(vol: Volume, queue: Queue, buffer_size: int, offset: int): read_buffer = Data(buffer_size) io = vol.new_io(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 io_operation( vol: Volume, queue: Queue, data: Data, io_direction: int, offset: int = 0, io_class: int = 0, ): io = vol.new_io(queue, offset, data.size, io_direction, io_class, 0) io.set_data(data) completion = OcfCompletion([("err", c_int)]) io.callback = completion.callback io.submit() completion.wait() return completion