fs_block_size -> fs_blocksize, and int to make it consistent
[virt-df.git] / lib / diskimage_utils.ml
index 00c085e..cbd809f 100644 (file)
@@ -137,6 +137,20 @@ object
   method mapblock i = [dev, i *^ Int64.of_int blocksize +^ start]
 end
 
+(* A device with just a modified block size. *)
+class blocksize_overlay new_blocksize (dev : device) =
+object
+  inherit device
+  method name = dev#name
+  method size = dev#size
+  method read offset len = dev#read offset len
+  method blocksize = new_blocksize
+  method mapblock new_blk =
+    let orig_blk =
+      new_blk *^ Int64.of_int new_blocksize /^ Int64.of_int dev#blocksize in
+    dev#mapblock orig_blk
+end
+
 (* The null device.  Any attempt to read generates an error. *)
 let null_device : device =
 object
@@ -190,7 +204,8 @@ and partition_content =
 (* Filesystems (also swap devices). *)
 and filesystem = {
   fs_plugin_id : fs_plugin_id;         (* Filesystem. *)
-  fs_block_size : int64;               (* Block size (bytes). *)
+  fs_dev : device;                     (* Device containing the filesystem. *)
+  fs_blocksize : int;                  (* Block size (bytes). *)
   fs_blocks_total : int64;             (* Total blocks. *)
   fs_is_swap : bool;                   (* If swap, following not valid. *)
   fs_blocks_reserved : int64;          (* Blocks reserved for super-user. *)