Added #contiguous method to make block mapping more efficient, and
[virt-df.git] / lib / diskimage_utils.mli
index 07ad079..641483d 100644 (file)
@@ -25,28 +25,46 @@ val debug : bool ref
 class virtual device :
   object
     method virtual name : string
-    method virtual size : int64
-    method close : unit -> unit
-    method virtual read : int64 -> int -> string
-    method read_bitstring : int64 -> int -> Bitmatch.bitstring
+    method virtual size : Int63.t
+    method read : Int63.t -> Int63.t -> string
+    method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
+    method virtual blocksize : Int63.t
+    method virtual map_block : Int63.t -> (device * Int63.t) list
+    method virtual contiguous : Int63.t -> Int63.t
   end
 
-class block_device : string ->
+class block_device : string -> Int63.t ->
   object
     method name : string
-    method size : int64
+    method size : Int63.t
+    method read : Int63.t -> Int63.t -> string
+    method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
+    method blocksize : Int63.t
+    method map_block : Int63.t -> (device * Int63.t) list
+    method contiguous : Int63.t -> Int63.t
     method close : unit -> unit
-    method read : int64 -> int -> string
-    method read_bitstring : int64 -> int -> Bitmatch.bitstring
   end
 
-class offset_device : string -> int64 -> int64 -> device ->
+class offset_device : string -> Int63.t -> Int63.t -> Int63.t -> device ->
   object
     method name : string
-    method size : int64
-    method close : unit -> unit
-    method read : int64 -> int -> string
-    method read_bitstring : int64 -> int -> Bitmatch.bitstring
+    method size : Int63.t
+    method read : Int63.t -> Int63.t -> string
+    method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
+    method blocksize : Int63.t
+    method map_block : Int63.t -> (device * Int63.t) list
+    method contiguous : Int63.t -> Int63.t
+  end
+
+class blocksize_overlay : Int63.t -> device ->
+  object
+    method name : string
+    method size : Int63.t
+    method read : Int63.t -> Int63.t -> string
+    method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
+    method blocksize : Int63.t
+    method map_block : Int63.t -> (device * Int63.t) list
+    method contiguous : Int63.t -> Int63.t
   end
 
 val null_device : device
@@ -60,7 +78,7 @@ type machine = {
 
 and disk = {
   d_name : string;
-  d_dev : device;
+  d_dev : block_device;
   d_content : disk_content;
 }
 
@@ -91,16 +109,17 @@ and partition_content =
 
 and filesystem = {
   fs_plugin_id : fs_plugin_id;
-  fs_block_size : int64;
-  fs_blocks_total : int64;
+  fs_dev : device;
+  fs_blocksize : Int63.t;
+  fs_blocks_total : Int63.t;
   fs_is_swap : bool;
-  fs_blocks_reserved : int64;
-  fs_blocks_avail : int64;
-  fs_blocks_used : int64;
-  fs_inodes_total : int64;
-  fs_inodes_reserved : int64;
-  fs_inodes_avail : int64;
-  fs_inodes_used : int64;
+  fs_blocks_reserved : Int63.t;
+  fs_blocks_avail : Int63.t;
+  fs_blocks_used : Int63.t;
+  fs_inodes_total : Int63.t;
+  fs_inodes_reserved : Int63.t;
+  fs_inodes_avail : Int63.t;
+  fs_inodes_used : Int63.t;
 }
 
 and pv = {
@@ -127,14 +146,3 @@ val range : int -> int -> int list
 (** [range a b] returns the list of integers [a <= i < b].
     If [a >= b] then the empty list is returned.
 *)
-
-val ( +* ) : int32 -> int32 -> int32
-val ( -* ) : int32 -> int32 -> int32
-val ( ** ) : int32 -> int32 -> int32
-val ( /* ) : int32 -> int32 -> int32
-
-val ( +^ ) : int64 -> int64 -> int64
-val ( -^ ) : int64 -> int64 -> int64
-val ( *^ ) : int64 -> int64 -> int64
-val ( /^ ) : int64 -> int64 -> int64
-(** int32 and int64 infix operators for convenience. *)