From: Jeff Cody <jcody@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, famz@redhat.com, stefanha@redhat.com
Subject: [Qemu-devel] [PATCH v4 00/13] VHDX log replay and write support, .bdrv_create()
Date: Tue, 20 Aug 2013 02:01:11 -0400 [thread overview]
Message-ID: <cover.1376976937.git.jcody@redhat.com> (raw)
This patch series contains the initial VHDX log parsing, replay,
and write support. (New with v4: VHDX image file creation)
=== v4 changes ===
v4 patches are available from github as well, on branch vhdx-write-v4-upstream:
https://github.com/codyprime/qemu-kvm-jtc/tree/vhdx-write-v4-upstream
https://github.com/codyprime/qemu-kvm-jtc.git
Those in the midst of reviewing v3, don't fear - the only changes with v4 is
the addition of patches on the end of the series (patches 10-13). These
patches enable creating VHDX images. Image files created have been
(briefly & lightly) tested on Hyper-V running on Windows Server 2012.
Some of the new patches could be squashed with earlier patches in the series,
but I refrained from doing so, since some of the patches have already been
reviewed, and others are in the midst of review. I want to make it as easy
as possible on those currently reviewing. There is nothing critical
that needs to be pushed into the earlier patches.
New patches:
Patch 10: Breaks out some more endian translation functions
(likely squashable into patch 5)
Patch 11: Break out some operations into seperate helper functions
Patch 12: More comment typos and header fixes in vhdx.h
(likely squashable into patch 1)
Patch 13: Adds .bdrv_create() for vhdx. VHDX images are can be created for
Fixed or Dynamic images.
Patches 1-9 are unchanged.
=== end v4 changelog ===
=== v3 changes ===
Thank you Kevin & Stefan for the feedback; incoporated in v3:
Patch 1: --- nil ---
Patch 2: * use sizeof(crc) instead of 4
* remove outdated comment
* use sizeof(MSGUID) instead of 16
* direct assignment of guid structs rather than memcpy
* rename 'rw' to 'generate_data_write_guid'
* use offsetof() instead of 4
* comment typos
* add missing error checking
* MSGUID is now QEMU_PACKED
* configure enable for vhdx is now correct and not braindead
Patch 3: --- nil ---
Patch 4: * code style fixes
* removed unused struct (VHDXLogEntryInfo)
Patch 5: * more direct assignment of guid rather than memcpy
* order of operation in export/import the same now
* became less generous with newlines (bah-humbug!)
Patch 6: * more direct assignment of guid rather than memcpy
* add error check in vhdx_user_visible_write(), now returns int
Patch 7: * check error return now of vhdx_user_visible_write()
Patch 8: * check error return now of vhdx_user_visible_write()
* vhdx_log_write_sectors() uses bdrv_pwrite() vs bdrv_pwrite_sync()
* more direct assignment of guid rather than memcpy
* use offsetof() instead of 4
Patch 9: --- nil ---
=== end v3 changelog ===
v2 changes: Incorporated Fam's review feedback - Thank you Fam for the feedback
=== end v2 changelog ===
This will allow an existing log in a VHDX image to be replayed (e.g., a VHDX
image from a Hyper-V host that crashed). In addition, metadata writes are
enabled through the log. This allows write support to be enabled for VHDX,
as the BAT can be updated safely via the log journal.
These exact patches are available from github, for testing:
https://github.com/codyprime/qemu-kvm-jtc/tree/vhdx-write-v2-upstream
The latest vhdx work (including anything beyond these patches, such as
backing/parent file support) can be found at:
https://github.com/codyprime/qemu-kvm-jtc/tree/jtc-vhdx-latest
Jeff Cody (13):
block: vhdx - minor comments and typo correction.
block: vhdx - add header update capability.
block: vhdx code movement - VHDXMetadataEntries and BDRVVHDXState to
header.
block: vhdx - log support struct and defines
block: vhdx - break endian translation functions out
block: vhdx - update log guid in header, and first write tracker
block: vhdx - log parsing, replay, and flush support
block: vhdx - add log write support
block: vhdx write support
block: vhdx - move more endian translations to vhdx-endian.c
block: vhdx - break out code operations to functions
block: vhdx - fix comment typos in header, fix incorrect struct fields
block: vhdx - add .bdrv_create() support
block/Makefile.objs | 2 +-
block/vhdx-endian.c | 216 +++++++++++
block/vhdx-log.c | 1011 ++++++++++++++++++++++++++++++++++++++++++++++++++
block/vhdx.c | 1014 ++++++++++++++++++++++++++++++++++++++++++++-------
block/vhdx.h | 167 +++++++--
configure | 24 ++
6 files changed, 2273 insertions(+), 161 deletions(-)
create mode 100644 block/vhdx-endian.c
create mode 100644 block/vhdx-log.c
--
1.8.1.4
next reply other threads:[~2013-08-20 6:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-20 6:01 Jeff Cody [this message]
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 01/13] block: vhdx - minor comments and typo correction Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 02/13] block: vhdx - add header update capability Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 03/13] block: vhdx code movement - VHDXMetadataEntries and BDRVVHDXState to header Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 04/13] block: vhdx - log support struct and defines Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 05/13] block: vhdx - break endian translation functions out Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 06/13] block: vhdx - update log guid in header, and first write tracker Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 07/13] block: vhdx - log parsing, replay, and flush support Jeff Cody
2013-08-21 15:09 ` Stefan Hajnoczi
2013-08-21 15:38 ` Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 08/13] block: vhdx - add log write support Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 09/13] block: vhdx " Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 10/13] block: vhdx - move more endian translations to vhdx-endian.c Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 11/13] block: vhdx - break out code operations to functions Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 12/13] block: vhdx - fix comment typos in header, fix incorrect struct fields Jeff Cody
2013-08-20 6:01 ` [Qemu-devel] [PATCH v4 13/13] block: vhdx - add .bdrv_create() support Jeff Cody
2013-08-20 14:26 ` [Qemu-devel] [PATCH v4 00/13] VHDX log replay and write support, .bdrv_create() 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=cover.1376976937.git.jcody@redhat.com \
--to=jcody@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).