Add a fs_dev field to filesystem
[virt-df.git] / lib / diskimage_linux_swap.ml
index 8f15651..ae8c405 100644 (file)
@@ -24,6 +24,9 @@ open Diskimage_utils
 
 let plugin_id = "linux_swap"
 
+let blocksize = 4096                   (* XXX *)
+let blocksize64 = 4096L                        (* XXX *)
+
 let probe dev =
   (* Load the "superblock" (ie. first 0x1000 bytes). *)
   let bits = dev#read_bitstring 0L 0x1000 in
@@ -34,20 +37,24 @@ let probe dev =
       padding : 8*0x1000 - 10*8 : bitstring;
       "SWAPSPACE2" : 80 : string
     } ->
-    {
-      fs_plugin_id = plugin_id;
-      fs_block_size = 4096L;           (* XXX *)
-      fs_blocks_total = dev#size /^ 4096L;
-
-      (* The remaining fields are ignored when fs_is_swap is true. *)
-      fs_is_swap = true;
-      fs_blocks_reserved = 0L;
-      fs_blocks_avail = 0L;
-      fs_blocks_used = 0L;
-      fs_inodes_total = 0L;
-      fs_inodes_reserved = 0L;
-      fs_inodes_avail = 0L;
-      fs_inodes_used = 0L;
-    }
+
+      let fs_dev = new blocksize_overlay blocksize dev in
+      {
+       fs_dev = fs_dev;
+       fs_plugin_id = plugin_id;
+       fs_block_size = blocksize64;
+       fs_blocks_total = fs_dev#size /^ blocksize64;
+
+       (* The remaining fields are ignored when fs_is_swap is true. *)
+       fs_is_swap = true;
+       fs_blocks_reserved = 0L;
+       fs_blocks_avail = 0L;
+       fs_blocks_used = 0L;
+       fs_inodes_total = 0L;
+       fs_inodes_reserved = 0L;
+       fs_inodes_avail = 0L;
+       fs_inodes_used = 0L;
+      }
+
   | { _ } ->
       raise Not_found                  (* Not Linux swapspace. *)