X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fdiskimage_utils.ml;h=cbd809f24828f99fd0f85168de71550e5dc1c9d4;hb=70ecd5f92e887185fd3e09f603e4c5e1a06ef4f4;hp=00c085e173c92497f051ba97e662a1611e34e38a;hpb=4cb1be48118971ebe749c4030f871aa25d26c520;p=virt-df.git diff --git a/lib/diskimage_utils.ml b/lib/diskimage_utils.ml index 00c085e..cbd809f 100644 --- a/lib/diskimage_utils.ml +++ b/lib/diskimage_utils.ml @@ -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. *)