Added bitmap structure. Run ownership tests for sample block device.
[virt-df.git] / lib / diskimage.mli
index 0689a69..5d2a420 100644 (file)
@@ -296,11 +296,43 @@ val scan_machine : machine -> machine
 
 (** {3 Create ownership tables} *)
 
-val create_ownership : machine -> (*ownership*)unit
+type ownership
+
+val create_ownership : machine -> ownership
   (** This creates the ownership tables (mapping disk blocks to the
-      ultimate filesystem, etc., which owns each).
+      ultimate filesystem, etc., which owns each one).
   *)
 
+type owner =
+    [ `Filesystem of filesystem
+    | `Partitions of partitions
+    | `PhysicalVolume of pv ]
+
+val get_owners_lookup : machine -> ownership -> block_device ->
+  (Int63.t -> (owner * Int63.t) list)
+  (** [get_owners_lookup machine disk] returns a specialized
+      function for looking up owners (filesystems, etc.)
+      which reside on block device [disk].
+
+      [disk] must be a block device of the machine.
+
+      The specialized lookup function that is returned
+      can be called as [lookup offset] to look up the
+      owners of byte offset [offset].
+
+      Returns a list of [(owner, owner_offset)] where [owner]
+      is the filesystem, etc., and [owner_offset] is the byte
+      offset relative to the owner.
+
+      It is common for there to be multiple owners: for example
+      in the case where a filesystem is created on a partition,
+      both the filesystem ([`Filesystem fs]) and
+      partition scheme ([`Partitions parts]) will be returned.
+
+      The specialized function is efficient.  {!create_ownership}
+      creates a tree structure which allows ownership to be determined
+      in just a few steps. *)
+
 (** {2 Debugging} *)
 
 val debug : bool ref