예제 #1
0
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"
예제 #2
0
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
예제 #3
0
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