[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 1/6] block: add basic conversion api
From: |
Devin Nakamura |
Subject: |
[Qemu-devel] [PATCH v3 1/6] block: add basic conversion api |
Date: |
Wed, 13 Jul 2011 08:57:39 -0400 |
add functions to block driver interface to support inplace image conversion
Signed-off-by: Devin Nakamura <address@hidden>
---
block_int.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 0 deletions(-)
diff --git a/block_int.h b/block_int.h
index 1e265d2..050ecf3 100644
--- a/block_int.h
+++ b/block_int.h
@@ -137,6 +137,76 @@ struct BlockDriver {
*/
int (*bdrv_has_zero_init)(BlockDriverState *bs);
+ /* In-place image conversion */
+
+ /**
+ *
+ * @param bs Basic Initialization done by
bdrv_open_conversion_target()
+ * Still need to set
+ * @param options Creation options.
+ * @return Returns non-zero on failure.
+ */
+ int (*bdrv_open_conversion_target)(BlockDriverState *bs,
+ QEMUOptionParameter *options);
+
+ /**
+ * Gets a mapping in the image file.
+ *
+ * The function starts searching for a mapping at
+ * starting_guest_offset = guest_offset + contiguous_bytes
+ * @param bs[in] The image in which to find mapping.
+ * @param guest_offset[in,out] On function entry used to calculate
+ * starting search address.
+ * On function exit contains the staring
+ * guest offset of the mapping.
+ * @param host_offset[out] The starting image file offset for the
+ * mapping.
+ * @param contiguous_bytes[in,out] On function entry used to calculate
+ * starting search address.
+ * On function exit contains the number of
+ * bytes for which this mapping is valid.
+ * A value of 0 means there are no more
+ * mappings in the image.
+ * @return Returns non-zero on error.
+ */
+ int (*bdrv_get_mapping)(BlockDriverState *bs, uint64_t *guest_offset,
+ uint64_t *host_offset, uint64_t *contiguous_bytes);
+
+ /**
+ * Sets a mapping in the image file.
+ *
+ * @param bs Usualy opened with bdrv_open_conversion_target
+ * @param guest_offset The starting guest offset of the mapping
+ * (in bytes)
+ * @param host_offset The starting image offset of the mapping
+ * (in bytes)
+ * @param contiguous_bytes The number of bytes for which this mapping
exists
+ * @return Returns non-zero on error
+ */
+ int (*bdrv_map)(BlockDriverState *bs, uint64_t guest_offset,
+ uint64_t host_offset, uint64_t contiguous_bytes);
+
+ /**
+ * Copies out the header of a conversion target
+ *
+ * Saves the current header for the image in a temporary file and
overwrites
+ * it with the header for the new format (at the moment the header is
+ * assumed to be 1 sector)
+ *
+ * @param bs Usualy opened with bdrv_open_conversion_target().
+ * @return Returns non-zero on failure
+ */
+ int (*bdrv_copy_header) (BlockDriverState *bs);
+
+ /**
+ * Asks the block driver what options should be used to create a conversion
+ * target.
+ * @param options[out]
+ */
+ int (*bdrv_get_conversion_options)(BlockDriverState *bs,
+ QEMUOptionParameter **options);
+
+
QLIST_ENTRY(BlockDriver) list;
};
--
1.7.6.rc1
- [Qemu-devel] [PATCH v3 1/6] block: add basic conversion api,
Devin Nakamura <=
- [Qemu-devel] [PATCH v3 2/6] block: add bdrv_get_conversion_options(), Devin Nakamura, 2011/07/13
- [Qemu-devel] [PATCH v3 3/6] block: add bdrv_open_conversion_target(), Devin Nakamura, 2011/07/13
- [Qemu-devel] [PATCH v3 4/6] block: add bdrv_get_mapping(), Devin Nakamura, 2011/07/13
- [Qemu-devel] [PATCH v3 5/6] block: add bdrv_map(), Devin Nakamura, 2011/07/13
- [Qemu-devel] [PATCH v3 6/6] block: add bdrv_copy_header(), Devin Nakamura, 2011/07/13
- Re: [Qemu-devel] [PATCH v3 1/6] block: add basic conversion api, Kevin Wolf, 2011/07/14