Skip to content

block: bdrv_reopen() patches

Jeff Cody qemu-devel 4 versions – Applied

Status from this message: Thanks, applied all to the block branch, except for patch 15

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest19 patches 6 repliesApplied
  2. v319 patches 10 repliesSuperseded
  3. v216 patches 24 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v17 patches19 repliesSuperseded

Changes in v4 from the cover letter

==========================

Patches in v4 Applied

#Subject and filesSizeRepliesApplied
1/19block: correctly set the keep_read_only flagblock.c block.h+8 -70 replies
2/19block: make bdrv_set_enable_write_cache() modify open_flagsblock.c+7 -00 replies
3/19block: Framework for reopening files safelyblock.c block.h block_int.h+257 -00 replies
4/19block: move aio initialization into a helper functionblock/raw-posix.c+35 -181 reply
5/19block: move open flag parsing in raw block drivers to helper functionsblock/raw-posix.c block/raw-win32.c+47 -340 replies
6/19block: do not parse BDRV_O_CACHE_WB in block driversblock/iscsi.c block/raw-posix.c block/raw-win32.c +2 more+6 -240 replies
7/19block: use BDRV_O_NOCACHE instead of s->aligned_buf in raw-posix.cblock/raw-posix.c+1 -10 replies
8/19block: purge s->aligned_buf and s->aligned_buf_size from raw-posix.cblock/raw-posix.c+1 -200 replies
9/19block: raw-posix image file reopenblock/raw-posix.c+114 -00 replies
10/19block: raw image file reopenblock/raw.c+10 -00 replies
11/19block: qed image file reopenblock/qed.c+9 -00 replies
12/19block: qcow2 image file reopenblock/qcow2.c+10 -00 replies
13/19block: qcow image file reopenblock/qcow.c+10 -00 replies
14/19block: vmdk image file reopenblock/vmdk.c+35 -00 replies
15/19block: raw-win32 driver reopen supportblock/raw-win32.c+105 -04 replies
16/19block: vdi image file reopenblock/vdi.c+7 -00 replies
17/19block: vpc image file reopenblock/vpc.c+7 -00 replies
18/19block: convert bdrv_commit() to use bdrv_reopen()block.c+5 -430 replies
19/19block: remove keep_read_only flag from BlockDriverState structblock.c block_int.h+0 -30 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.

Read the v4 thread

Cover letter [Qemu-devel] [PATCH v4 00/19] block: bdrv_reopen() patches

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(-)
Signature · 1 line
1.7.11.4