Added bitmap structure. Run ownership tests for sample block device.
[virt-df.git] / diskzip / diskzip.ml
index 3de7f63..7e2969a 100644 (file)
@@ -20,7 +20,9 @@
 open Unix
 open Printf
 
+open Int63.Operators
 open Diskzip_gettext.Gettext
+module Bitmap = Diskzip_bitmap
 
 type output = File of string | Dir of string
 type extcompress = BZip2 | GZip | External of string
@@ -151,7 +153,29 @@ and go_compress extcompress images =
   let ownership = Diskimage.create_ownership machine in
 
   (* Create ownership bitmap for each disk. *)
-
+  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. *)
+
+      if !Diskimage.debug then
+       eprintf "Creating bitmap for %s (%s sectors) ...\n%!"
+         disk#name (Int63.to_string nr_blocks);
+
+      (* Create an empty bitmap, one bit per sector. *)
+      let bitmap = Bitmap.create nr_blocks in
+
+      (* Get the lookup function for this disk. *)
+      let lookup = Diskimage.get_owners_lookup machine ownership disk in
+
+      (* Lookup each sector. *)
+      Bitmap.iter_set (
+       fun blk _ ->
+         let owners = lookup blk in
+         false
+      ) bitmap
+  ) machine.Diskimage.m_disks;
 
   (* Redirect output through external pipe if asked. *)
   (match extcompress with