Block signatures and implementations for MirageOS using Lwt

Sparse copy bytes between blocks

This functor use seeks operation to perform fast sparse copy between blocks.


module A : SEEKABLE
module B : Mirage_block.S


type error#row

The type for copy errors.

and error = private [>
| `Is_read_only
| `Different_sizes

The type for copy errors.

val pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

val v : src:A.t -> dst:B.t -> ( unit, error ) result Lwt.t

Copy all mapped data from a source SEEKABLE device to a destination BLOCK device.

This function will preserve sparseness information in the source disk. The destination block device must be pre-zeroed, otherwise previous data will "leak through".

Fails with `Different_sizes if the source and destination are not exactly the same size.

Fails with `Is_read_only if the destination device is read-only.