Module Qcow_metadata

type t

Qcow metadata: clusters containing references and clusters containing reference counts.

type error = [
| Mirage_block.error
| `Msg of string
]
type write_error = [
| Mirage_block.write_error
| `Msg of string
]
val make : cache:Qcow_cache.t -> cluster_bits:int -> locks:Qcow_locks.t -> unit -> t

Construct a qcow metadata structure given a set of cluster read/write/flush operations

val set_cluster_map : t -> Qcow_cluster_map.t -> unit

Set the associated cluster map (which will be updated on every cluster write)

type contents
module Refcounts : sig ... end
module Physical : sig ... end
val erase : contents -> unit

Set the cluster contents to zeroes

val read_and_lock : ?⁠client:Qcow_locks.Client.t -> t -> Qcow_types.Cluster.t -> (contents * Qcow_locks.lockerror) Stdlib.result Lwt.t
val read : ?⁠client:Qcow_locks.Client.t -> t -> Qcow_types.Cluster.t -> (contents -> ('aerror) Stdlib.result Lwt.t) -> ('aerror) Stdlib.result Lwt.t

Read the contents of the given cluster and provide them to the given function

val update : ?⁠client:Qcow_locks.Client.t -> t -> Qcow_types.Cluster.t -> (contents -> ('awrite_error) Stdlib.result Lwt.t) -> ('awrite_error) Stdlib.result Lwt.t

Read the contents of the given cluster, transform them through the given function and write the results back to disk