[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 00/19] block: bdrv_reopen() patches
From: |
Jeff Cody |
Subject: |
[Qemu-devel] [PATCH v4 00/19] block: bdrv_reopen() patches |
Date: |
Thu, 20 Sep 2012 15:13:16 -0400 |
These patches are based off Supriya Kannery's original bdrv_reopen()
patches as part of the hostcache series.
This provides support for safe reopen of a single image, or transactional
reopening of multiple images atomically.
These changes are all reflected in my github repo:
git://github.com/codyprime/qemu-kvm-jtc.git branch: jtc-live-commit-1.3-v7
Changes from v3 -> v4:
==========================
Compiled with gcc 4.7.0 (F17) and 4.4.6 (RHEL6); previously I only compiled
under F17.
Patch 03/19: [Kevin] Removed the typedef from qemu-common, so it compiles on
earlier gcc versions
Patch 04/19: [Kevin] Check return value of raw_set_aio()
Patch 09/19: [Eric] Add additional conditionals for CONFIG_LINUX_AIO and
F_DUPFD_CLOEXEC, and fix typo
[Kevin] Assign s->aio_ctx directly instead of via
BDRVRawReopenState
Changes from v2 -> v3:
==========================
Patch 03/19: [Paolo] BlockReopenQueue is now only passed to the _prepare
functions.
Patch 06/19: [Kevin, Paolo] New. Purge imporper usage of BDRV_O_CACHE_WB.
Patch 07/19: [Paolo] New. Use BDRV_O_NOCACHE instead of align_buf.
Patch 08/19: [Paolo] New. Purge aligned_buf and aligned_buf_size.
Patch 09/19: [Paolo] reopen no longer uses aligned_buf. BlockReopenQueue is
now passed only to the _prepare() functions.
Patch 10/19 - 14/19: [Paolo] Removed unneeded _commit() and _abort() stubs
Patch 15/19: [Paolo] BlockReopenQueue is now only passed to the _prepare
functions.
Patch 16/19: [Paolo] New. Support new image format.
Patch 17/19: [Paolo] New. Support new image format.
Changes from v1 -> v2:
==========================
Patch 01/16: None
Patch 02/16: New patch
Patch 03/16: [Kevin] Use QSIMPLEQ_FOREACH_SAFE
[Kevin] Use BDRV_O_ALLOW_RDWR flag instead of keep_read_only
[Kevin] Preserve error on failure of bdrv_flush()
[Kevin] bdrv_reopen_prepare() no longer calls bdrv_reopen_abort()
[Kevin] Directly embed BDRVReopenState field in
BlockReopenQueueEntry, rather than by reference
[Jeff] Add BlockReopenQueue field to the BDRVReopenState struct
Feedback not incorporated:
--------------------------
[Kevin] Sharing 3 of the BDS flag setting lines with bdrv_open().
I didn't see a great way of doing this.
Patch 04/16: New patch, aio init code motion
Patch 05/16: [Kevin] New patch, raw_parse_flags code motion
Patch 06/16: [Kevin] New patch. Do not parse BDRV_O_CACHE_WB in
raw_posix/raw_win32
Patch 07/16: [Kevin] New patch. Code motion - move aligned_buf allocation
to helper function.
Patch 08/16: [Kevin] See patches 4-7
[Kevin] Init AIO, if appropriate
[Kevin] Fallback to qemu_open, if fcntl fails
[Eric] Remove spurious mode in qemu_open()
[Corey] Use qemu_close() instead of qemu_open()
Feedback not incorporated:
--------------------------
Moving from fcntl + fcntl_setfl to qemu_dup_flags or equivalent.
Ideally I think a separate patch series creating a wrapper
function for fcntl, and then update this code with the new wrapper.
Patch 09/16: None
Patch 10/16: None
Patch 11/16: None
Patch 12/16: None
Patch 13/16: New patch, VMDK driver for reopen
Patch 14/16: New patch, raw-win32 driver for reopen. Note, not necessarily
safe. If anyone knows a better way to do it under win32, without
potentially having to close the handle first, please let me know.
Patch 15/16: New patch, move bdrv_commit to use bdrv_reopen()
Patch 16/16: [Kevin] Get rid of keep_read_only flag completely
Jeff Cody (19):
block: correctly set the keep_read_only flag
block: make bdrv_set_enable_write_cache() modify open_flags
block: Framework for reopening files safely
block: move aio initialization into a helper function
block: move open flag parsing in raw block drivers to helper
functions
block: do not parse BDRV_O_CACHE_WB in block drivers
block: use BDRV_O_NOCACHE instead of s->aligned_buf in raw-posix.c
block: purge s->aligned_buf and s->aligned_buf_size from raw-posix.c
block: raw-posix image file reopen
block: raw image file reopen
block: qed image file reopen
block: qcow2 image file reopen
block: qcow image file reopen
block: vmdk image file reopen
block: raw-win32 driver reopen support
block: vdi image file reopen
block: vpc image file reopen
block: convert bdrv_commit() to use bdrv_reopen()
block: remove keep_read_only flag from BlockDriverState struct
block.c | 299 +++++++++++++++++++++++++++++++++++++++++++++---------
block.h | 18 ++++
block/iscsi.c | 4 -
block/qcow.c | 10 ++
block/qcow2.c | 10 ++
block/qed.c | 9 ++
block/raw-posix.c | 225 ++++++++++++++++++++++++++++++----------
block/raw-win32.c | 145 ++++++++++++++++++++++----
block/raw.c | 10 ++
block/rbd.c | 6 --
block/sheepdog.c | 14 ++-
block/vdi.c | 7 ++
block/vmdk.c | 35 +++++++
block/vpc.c | 7 ++
block_int.h | 9 +-
15 files changed, 666 insertions(+), 142 deletions(-)
--
1.7.11.4
- [Qemu-devel] [PATCH v4 00/19] block: bdrv_reopen() patches,
Jeff Cody <=
- [Qemu-devel] [PATCH v4 02/19] block: make bdrv_set_enable_write_cache() modify open_flags, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 03/19] block: Framework for reopening files safely, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 04/19] block: move aio initialization into a helper function, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 01/19] block: correctly set the keep_read_only flag, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 06/19] block: do not parse BDRV_O_CACHE_WB in block drivers, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 07/19] block: use BDRV_O_NOCACHE instead of s->aligned_buf in raw-posix.c, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 05/19] block: move open flag parsing in raw block drivers to helper functions, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 09/19] block: raw-posix image file reopen, Jeff Cody, 2012/09/20
- [Qemu-devel] [PATCH v4 08/19] block: purge s->aligned_buf and s->aligned_buf_size from raw-posix.c, Jeff Cody, 2012/09/20