All of lore.kernel.org
 help / color / mirror / Atom feed
From: Devin Nakamura <devin122@gmail.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, Devin Nakamura <devin122@gmail.com>
Subject: [Qemu-devel] [PATCH v3 1/6] block: add basic conversion api
Date: Wed, 13 Jul 2011 08:57:39 -0400	[thread overview]
Message-ID: <1310561864-18964-1-git-send-email-devin122@gmail.com> (raw)

add functions to block driver interface to support inplace image conversion

Signed-off-by: Devin Nakamura <devin122@gmail.com>
---
 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

             reply	other threads:[~2011-07-13 12:58 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-13 12:57 Devin Nakamura [this message]
2011-07-13 12:57 ` [Qemu-devel] [PATCH v3 2/6] block: add bdrv_get_conversion_options() Devin Nakamura
2011-07-13 12:57 ` [Qemu-devel] [PATCH v3 3/6] block: add bdrv_open_conversion_target() Devin Nakamura
2011-07-13 12:57 ` [Qemu-devel] [PATCH v3 4/6] block: add bdrv_get_mapping() Devin Nakamura
2011-07-13 12:57 ` [Qemu-devel] [PATCH v3 5/6] block: add bdrv_map() Devin Nakamura
2011-07-13 12:57 ` [Qemu-devel] [PATCH v3 6/6] block: add bdrv_copy_header() Devin Nakamura
2011-07-14 14:19 ` [Qemu-devel] [PATCH v3 1/6] block: add basic conversion api Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1310561864-18964-1-git-send-email-devin122@gmail.com \
    --to=devin122@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.