Restructure library plug-ins again.
[virt-df.git] / lib / diskimage.mli
index 8cdd7a9..f16703c 100644 (file)
@@ -202,7 +202,7 @@ and disk_content =
     ]
 
 and partitions = {
-  parts_plugin_id : parts_plugin_id;   (** Partitioning scheme. *)
+  parts_cb : partitioner_callbacks;    (** Partitioning scheme. *)
   parts_dev : device;                  (** Partitions (whole) device. *)
   parts : partition list;              (** Partitions. *)
 }
@@ -222,7 +222,7 @@ and partition_content =
     ]
 
 and filesystem = {
-  fs_plugin_id : fs_plugin_id;         (** Filesystem type. *)
+  fs_cb : filesystem_callbacks;                (** Filesystem type. *)
   fs_dev : device;                     (** Device containing the filesystem. *)
   fs_blocksize : Int63.t;              (** Block size (bytes). *)
   fs_blocks_total : Int63.t;           (** Total blocks. *)
@@ -238,7 +238,7 @@ and filesystem = {
     (** A filesystem, with superblock contents. *)
 
 and pv = {
-  lvm_plugin_id : lvm_plugin_id;        (** The LVM plug-in which detected
+  pv_cb : lvm_callbacks;               (** The LVM plug-in which detected
                                            this. *)
   pv_dev : device;                     (** Device covering whole PV. *)
   pv_uuid : string;                    (** UUID. *)
@@ -248,18 +248,17 @@ and lv = {
 }
     (** Physical and logical volumes as used by LVM plug-ins. *)
 
-and parts_plugin_id
-and fs_plugin_id
-and lvm_plugin_id
-  (** Opaque IDs used to refer to the plug-ins. *)
-
-val name_of_parts : parts_plugin_id -> string
-val name_of_filesystem : fs_plugin_id -> string
-val name_of_lvm : lvm_plugin_id -> string
-  (** Convert plug-in IDs to printable strings. *)
+and partitioner_callbacks
+and filesystem_callbacks
+and lvm_callbacks
 
 (** {2 Functions} *)
 
+val name_of_filesystem : filesystem -> string
+  (** [name_of_filesystem fs] returns a printable name for
+      the filesystem.
+  *)
+
 (** {3 Create 'machine'} *)
 
 val open_machine : string -> (string * string) list -> machine
@@ -308,7 +307,7 @@ type owner =
     | `Partitions of partitions
     | `PhysicalVolume of pv ]
 
-val get_owners_lookup : machine -> ownership -> device ->
+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.)
@@ -333,6 +332,15 @@ val get_owners_lookup : machine -> ownership -> device ->
       creates a tree structure which allows ownership to be determined
       in just a few steps. *)
 
+val offset_is_free : (owner * Int63.t) list -> bool
+  (** [offset_is_free owners] tests if the offset is free (unused).
+
+      If an offset is free, then it may be discarded without
+      changing the semantics of the disk image.  In normal cases
+      this extends to the end of the current block, but blocksize
+      will differ for each owner, so what this really means is
+      tricky in practice. *)
+
 (** {2 Debugging} *)
 
 val debug : bool ref