mbox series

[v5,00/12] Exposing backing-chain allocation over NBD

Message ID 20201023183652.478921-1-eblake@redhat.com (mailing list archive)
Headers show
Series Exposing backing-chain allocation over NBD | expand

Message

Eric Blake Oct. 23, 2020, 6:36 p.m. UTC
v4 was here:
https://lists.gnu.org/archive/html/qemu-devel/2020-10/msg02708.html

Since then:
- rebase to master
- patches 1, 2, and 12 are new based on Vladimir's observation of QAPI_LIST_ADD
- patches 10-11 are new based on prior discussion on exposing actual
depth in addition to a tri-state encoding
- patch 3 has a nasty bug fixed that was causing iotest failures
- patch 6 updated to take advantage of patch 2
- other minor tweaks based on review comments

001/12:[down] 'qapi: Move GenericList to qapi/util.h'
002/12:[down] 'qapi: Make QAPI_LIST_ADD() public'
003/12:[0002] [FC] 'nbd: Utilize QAPI_CLONE for type conversion'
004/12:[0010] [FC] 'nbd: Add new qemu:allocation-depth metadata context'
005/12:[----] [--] 'nbd: Add 'qemu-nbd -A' to expose allocation depth'
006/12:[0014] [FC] 'nbd: Update qapi to support exporting multiple bitmaps'
007/12:[----] [--] 'nbd: Simplify qemu bitmap context name'
008/12:[----] [--] 'nbd: Refactor counting of metadata contexts'
009/12:[0017] [FC] 'nbd: Allow export of multiple bitmaps for one device'
010/12:[down] 'block: Return depth level during bdrv_is_allocated_above'
011/12:[down] 'nbd: Expose actual depth in qemu:allocation-depth'
012/12:[down] 'qapi: Use QAPI_LIST_ADD() where possible'

Eric Blake (12):
  qapi: Move GenericList to qapi/util.h
  qapi: Make QAPI_LIST_ADD() public
  nbd: Utilize QAPI_CLONE for type conversion
  nbd: Add new qemu:allocation-depth metadata context
  nbd: Add 'qemu-nbd -A' to expose allocation depth
  nbd: Update qapi to support exporting multiple bitmaps
  nbd: Simplify qemu bitmap context name
  nbd: Refactor counting of metadata contexts
  nbd: Allow export of multiple bitmaps for one device
  block: Return depth level during bdrv_is_allocated_above
  nbd: Expose actual depth in qemu:allocation-depth
  qapi: Use QAPI_LIST_ADD() where possible

 docs/devel/writing-qmp-commands.txt |  13 +-
 docs/interop/nbd.txt                |  31 +++-
 docs/system/deprecated.rst          |   4 +-
 docs/tools/qemu-nbd.rst             |   8 +-
 qapi/block-core.json                |   7 +-
 qapi/block-export.json              |  22 ++-
 include/qapi/visitor.h              |   9 +-
 hw/net/rocker/rocker_fp.h           |   2 +-
 include/block/nbd.h                 |  14 +-
 include/qapi/util.h                 |  16 ++
 block/io.c                          |  11 +-
 block.c                             |  15 +-
 block/commit.c                      |   2 +-
 block/gluster.c                     |  19 +--
 block/mirror.c                      |   2 +-
 block/stream.c                      |   2 +-
 blockdev-nbd.c                      |  28 ++--
 chardev/char.c                      |  21 ++-
 hw/core/machine.c                   |   6 +-
 hw/net/rocker/rocker.c              |   8 +-
 hw/net/rocker/rocker_fp.c           |  14 +-
 hw/net/virtio-net.c                 |  21 +--
 migration/migration.c               |   7 +-
 migration/postcopy-ram.c            |   7 +-
 monitor/hmp-cmds.c                  |  11 +-
 nbd/server.c                        | 222 ++++++++++++++++++++++------
 qemu-img.c                          |   5 +-
 qemu-nbd.c                          |  30 ++--
 qga/commands-posix.c                |  13 +-
 qga/commands-win32.c                |  17 +--
 qga/commands.c                      |   6 +-
 qom/qom-qmp-cmds.c                  |  29 +---
 target/arm/helper.c                 |   6 +-
 target/arm/monitor.c                |  13 +-
 target/i386/cpu.c                   |   6 +-
 target/mips/helper.c                |   6 +-
 target/s390x/cpu_models.c           |  12 +-
 tests/test-clone-visitor.c          |   7 +-
 tests/test-qobject-output-visitor.c |  42 +++---
 tests/test-visitor-serialization.c  |   5 +-
 trace/qmp.c                         |  22 ++-
 ui/vnc.c                            |  21 +--
 util/qemu-config.c                  |  14 +-
 target/ppc/translate_init.c.inc     |  12 +-
 tests/qemu-iotests/291              |   6 +-
 tests/qemu-iotests/309              |  73 +++++++++
 tests/qemu-iotests/309.out          |  22 +++
 tests/qemu-iotests/group            |   1 +
 48 files changed, 529 insertions(+), 361 deletions(-)
 create mode 100755 tests/qemu-iotests/309
 create mode 100644 tests/qemu-iotests/309.out

Comments

Eric Blake Oct. 23, 2020, 6:44 p.m. UTC | #1
On 10/23/20 1:36 PM, Eric Blake wrote:
> v4 was here:
> https://lists.gnu.org/archive/html/qemu-devel/2020-10/msg02708.html
> 
> Since then:
> - rebase to master
> - patches 1, 2, and 12 are new based on Vladimir's observation of QAPI_LIST_ADD
> - patches 10-11 are new based on prior discussion on exposing actual
> depth in addition to a tri-state encoding
> - patch 3 has a nasty bug fixed that was causing iotest failures
> - patch 6 updated to take advantage of patch 2
> - other minor tweaks based on review comments
> 
> 001/12:[down] 'qapi: Move GenericList to qapi/util.h'
> 002/12:[down] 'qapi: Make QAPI_LIST_ADD() public'
> 003/12:[0002] [FC] 'nbd: Utilize QAPI_CLONE for type conversion'
> 004/12:[0010] [FC] 'nbd: Add new qemu:allocation-depth metadata context'
> 005/12:[----] [--] 'nbd: Add 'qemu-nbd -A' to expose allocation depth'
> 006/12:[0014] [FC] 'nbd: Update qapi to support exporting multiple bitmaps'
> 007/12:[----] [--] 'nbd: Simplify qemu bitmap context name'
> 008/12:[----] [--] 'nbd: Refactor counting of metadata contexts'
> 009/12:[0017] [FC] 'nbd: Allow export of multiple bitmaps for one device'
> 010/12:[down] 'block: Return depth level during bdrv_is_allocated_above'
> 011/12:[down] 'nbd: Expose actual depth in qemu:allocation-depth'
> 012/12:[down] 'qapi: Use QAPI_LIST_ADD() where possible'

and I meant to add:

Also available at:
https://repo.or.cz/qemu/ericb.git/shortlog/refs/tags/nbd-alloc-depth-v5

patch 12 is the largest; it may be worth splitting that by maintainer,
or even pushing it off post-5.2.  Logically, it can go in anywhere after
patch 2, but by putting it last, I'm hoping to send a pull request for
soft freeze next week for patches 1-11 for sure, and only include 12 if
we get enough positive review in time.  I did not try to see if
Coccinelle could make the work done in patch 12 more automatable.
Markus Armbruster Oct. 26, 2020, 2:54 p.m. UTC | #2
Eric Blake <eblake@redhat.com> writes:

> On 10/23/20 1:36 PM, Eric Blake wrote:
>> v4 was here:
>> https://lists.gnu.org/archive/html/qemu-devel/2020-10/msg02708.html
>> 
>> Since then:
>> - rebase to master
>> - patches 1, 2, and 12 are new based on Vladimir's observation of QAPI_LIST_ADD
>> - patches 10-11 are new based on prior discussion on exposing actual
>> depth in addition to a tri-state encoding
>> - patch 3 has a nasty bug fixed that was causing iotest failures
>> - patch 6 updated to take advantage of patch 2
>> - other minor tweaks based on review comments
>> 
>> 001/12:[down] 'qapi: Move GenericList to qapi/util.h'
>> 002/12:[down] 'qapi: Make QAPI_LIST_ADD() public'
>> 003/12:[0002] [FC] 'nbd: Utilize QAPI_CLONE for type conversion'
>> 004/12:[0010] [FC] 'nbd: Add new qemu:allocation-depth metadata context'
>> 005/12:[----] [--] 'nbd: Add 'qemu-nbd -A' to expose allocation depth'
>> 006/12:[0014] [FC] 'nbd: Update qapi to support exporting multiple bitmaps'
>> 007/12:[----] [--] 'nbd: Simplify qemu bitmap context name'
>> 008/12:[----] [--] 'nbd: Refactor counting of metadata contexts'
>> 009/12:[0017] [FC] 'nbd: Allow export of multiple bitmaps for one device'
>> 010/12:[down] 'block: Return depth level during bdrv_is_allocated_above'
>> 011/12:[down] 'nbd: Expose actual depth in qemu:allocation-depth'
>> 012/12:[down] 'qapi: Use QAPI_LIST_ADD() where possible'
>
> and I meant to add:
>
> Also available at:
> https://repo.or.cz/qemu/ericb.git/shortlog/refs/tags/nbd-alloc-depth-v5
>
> patch 12 is the largest; it may be worth splitting that by maintainer,

I wouldn't split.  The various parts will trickle in separately, and you
may well end up holding leftovers.

> or even pushing it off post-5.2.  Logically, it can go in anywhere after
> patch 2, but by putting it last, I'm hoping to send a pull request for
> soft freeze next week for patches 1-11 for sure, and only include 12 if
> we get enough positive review in time.  I did not try to see if
> Coccinelle could make the work done in patch 12 more automatable.

PATCH 12 serves a useful purpose even if we can't get it in right away:
it convinces me that making QAPI_LIST_ADD() public makes sense.