Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
An NBD client which allows you to connect to remote disks and perform I/O.
include S.CLIENT
include Mirage_block_lwt.S
with type error =
[ Mirage_block.error | `Protocol_error of Protocol.Error.t ]
and type write_error =
[ Mirage_block.write_error | `Protocol_error of Protocol.Error.t ]
type page_aligned_buffer = Cstruct.t
The type for page-aligned memory buffers.
The type for block errors.
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
type 'a io = 'a Lwt.t
The type for potentially blocking I/O operation
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) 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) 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 list :
Channel.channel ->
(string list, [ `Policy | `Unsupported ]) Result.result Lwt.t
list channel
returns a list of exports known by the server. `Error `Policy
means the server has this function disabled deliberately. `Error `Unsupported
means the server is old and does not support the query function.
val negotiate :
Channel.channel ->
string ->
(t * size * Protocol.PerExportFlag.t list) Lwt.t
negotiate channel export
takes an already-connected channel, performs the initial protocol negotiation and connects to the named export. Returns disk * remote disk size * flags