Removed bitmap object - don't need to build a bitmap.
[virt-df.git] / diskzip / diskzip.ml
index 3de7f63..8acabc4 100644 (file)
@@ -20,6 +20,7 @@
 open Unix
 open Printf
 
+open Int63.Operators
 open Diskzip_gettext.Gettext
 
 type output = File of string | Dir of string
@@ -37,10 +38,11 @@ let rec main () =
     match name with
     | "diskzcat" -> false
     | "diskzip" -> true
-    | name ->
+    | _ ->
        eprintf
          (f_"diskzip: unknown executable name '%s', assuming 'diskzip'\n")
-         name in
+         name;
+       true in
   let compressing = ref compressing in
 
   (* Command line argument parsing. *)
@@ -150,9 +152,6 @@ and go_compress extcompress images =
   (* Create ownership tables. *)
   let ownership = Diskimage.create_ownership machine in
 
-  (* Create ownership bitmap for each disk. *)
-
-
   (* Redirect output through external pipe if asked. *)
   (match extcompress with
    | None -> ()
@@ -174,7 +173,25 @@ and go_compress extcompress images =
         dup2 wfd stdout;
         close wfd
        )
-  )
+  );
+
+  (* Iterate over the disks. *)
+  List.iter (
+    fun { Diskimage.d_name = name; d_dev = disk } ->
+      let blocksize = disk#blocksize in
+      let size = disk#size in          (* Size in bytes. *)
+      let nr_blocks = size /^ blocksize in (* Number of disk sectors. *)
+
+      (* Get the lookup function for this disk. *)
+      let lookup = Diskimage.get_owners_lookup machine ownership disk in
+
+      (* Lookup each sector. *)
+      for blk = 0 to nr_blocks-1 do
+       ignore (lookup blk)
+      done
+  ) machine.Diskimage.m_disks;
+
+