Sparse copy bytes between blocks

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


module A : SEEKABLE
module B : S


type error = private [>
  1. | `Is_read_only
  2. | `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) Pervasives.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.