package qcow

  1. Overview
  2. Docs

A block device which is padded with virtual zeroes so that reads beyond the current end don't fail.

Parameters

Signature

include Qcow_s.RESIZABLE_BLOCK with type t = B.t and type page_aligned_buffer = Cstruct.t
include Mirage_block_lwt.S with type t = B.t with type page_aligned_buffer = Cstruct.t
type page_aligned_buffer = Cstruct.t

The type for page-aligned memory buffers.

type error = private [>
  1. | Mirage_device.error
]

The type for block errors.

val pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

type write_error = private [>
  1. | Mirage_device.error
  2. | `Is_read_only
]

The type for write errors.

val pp_write_error : write_error Fmt.t

pp_write_error is the pretty-printer for write errors.

include Mirage_device.S with type 'a io = 'a Lwt.t with type t = B.t
type 'a io = 'a Lwt.t

The type for potentially blocking I/O operation

type t = B.t

The type representing the internal state of the device

val disconnect : t -> unit io

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

val get_info : t -> Mirage_block.info io

Query the characteristics of a specific block device

val read : t -> int64 -> page_aligned_buffer list -> (unit, error) Pervasives.result io

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.

val write : t -> int64 -> page_aligned_buffer list -> (unit, write_error) Pervasives.result io

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:

  • `Unimplemented: the operation has not been implemented, no data has been written.
  • `Is_read_only: the device is read-only, no data has been written.
  • `Disconnected: the device has been disconnected at application request, an unknown amount of 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.

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

val resize : t -> int64 -> (unit, write_error) Result.result Lwt.t

Resize the file to the given number of sectors.

val flush : t -> (unit, write_error) Result.result io

flush t flushes any buffers, if the file has been opened in buffered mode

OCaml

Innovation. Community. Security.