Add a fs_dev field to filesystem
[virt-df.git] / lib / diskimage_utils.ml
index 00c085e..84eec94 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
@@ -189,6 +203,7 @@ and partition_content =
 
 (* Filesystems (also swap devices). *)
 and filesystem = {
+  fs_dev : device;                     (* Device containing the filesystem. *)
   fs_plugin_id : fs_plugin_id;         (* Filesystem. *)
   fs_block_size : int64;               (* Block size (bytes). *)
   fs_blocks_total : int64;             (* Total blocks. *)