package nbd

  1. Overview
  2. Docs

Module Mirror.MakeSource

Parameters

Signature

include Mirage_block.S
Sourcetype nonrec error = private [>
  1. | Mirage_block.error
]

The type for block errors.

Sourceval pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

Sourcetype nonrec write_error = private [>
  1. | Mirage_block.write_error
]

The type for write errors.

Sourceval pp_write_error : write_error Fmt.t

pp_write_error is the pretty-printer for write errors.

Sourcetype t

The type representing the internal state of the block device

Sourceval disconnect : t -> unit Lwt.t

Disconnect from the device. While this might take some time to complete, it can never result in an error.

Sourceval get_info : t -> Mirage_block.info Lwt.t

Query the characteristics of a specific block device

Sourceval read : t -> int64 -> Cstruct.t list -> (unit, error) result Lwt.t

read device sector_start buffers reads data starting at sector_start from the block device into buffers. Ok () means the buffers have been filled. Error _ indicates an I/O error has happened and some of the buffers may not be filled. Each of elements in the list buffers must be a whole number of sectors in length. The list of buffers can be of any length. Some implementations may further require that each element in buffers is exactly sector_size long.

Sourceval write : t -> int64 -> Cstruct.t list -> (unit, write_error) result Lwt.t

write device sector_start buffers writes data from buffers onto the block device starting at sector_start. Ok () means the contents of the buffers have been written. Error _ indicates a partial failure in which some of the writes may not have happened.

Once submitted, it is not possible to cancel a request and there is no timeout.

The operation may fail with: `Is_read_only: the device is read-only, no data has been written.

Each of buffers must be a whole number of sectors in length. The list of buffers can be of any length. Some implementations may further require that each element in buffers is exactly sector_size long.

The data will not be copied, so the supplied buffers must not be re-used until the IO operation completes.

Sourceval connect : ?progress_cb:([ `Percent of int | `Complete ] -> unit) -> Primary.t -> Secondary.t -> t Lwt.t

connect ?progress primary secondary creates a block device which performs I/O against primary, while building a mirror of primary on top of secondary in the background. Existing data in secondary will be destroyed.

If ?progress_cb is provided then it will be called on every percentage change in mirror progress.

It is an error if the block size of either primary or secondary is not an integer multiple of the other.

It is an error if primary and secondary have different lengths.

It is an error if secondary is read-only.

Sourceval string_of_error : error -> string
OCaml

Innovation. Community. Security.