package mirage-block-partition

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Parameters

module B : Mirage_block.S

Signature

include Mirage_block.S with type error = [ Mirage_block.error | `Block of B.error | `Out_of_bounds ] and type write_error = [ Mirage_block.write_error | `Block of B.write_error | `Out_of_bounds ]
type nonrec error = [
  1. | Mirage_block.error
  2. | `Block of B.error
  3. | `Out_of_bounds
]

The type for block errors.

val pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

type nonrec write_error = [
  1. | Mirage_block.write_error
  2. | `Block of B.write_error
  3. | `Out_of_bounds
]

The type for write errors.

val pp_write_error : write_error Fmt.t

pp_write_error is the pretty-printer for write errors.

type t

The type representing the internal state of the block device

val disconnect : t -> unit Lwt.t

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 Lwt.t

Query the characteristics of a specific block device

val read : t -> int64 -> Cstruct.t list -> (unit, error) Stdlib.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.

val write : t -> int64 -> Cstruct.t list -> (unit, write_error) Stdlib.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.

val connect : B.t -> t Lwt.t

connect b is the partition spanning the entire block device b.

val subpartition : start:int64 -> len:int64 -> t -> (t, error) Stdlib.result

subpartition ~start ~len t is Ok t' where t' is the sub partition of t starting at start relative to t with len sectors, or Error `Out_of_bounds if subpartition is outside t.

  • raises Invalid_argument

    when start or len are negative

val get_offset : t -> int64

get_offset b is the sector offset of the partition relative to the underlying block device.

OCaml

Innovation. Community. Security.