[libvirt] [PATCH 00/24] qemu: refactor node name detection

Peter Krempa posted 24 patches 6 years, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1501062802.git.pkrempa@redhat.com
src/libvirt_private.syms                           |    1 +
src/qemu/qemu_block.c                              |  344 ++-
src/qemu/qemu_block.h                              |   12 +-
src/qemu/qemu_driver.c                             |   10 +-
src/qemu/qemu_monitor.c                            |   15 +
src/qemu/qemu_monitor.h                            |    2 +
src/qemu/qemu_monitor_json.c                       |   44 +-
src/qemu/qemu_monitor_json.h                       |    2 +
src/util/virbuffer.c                               |   27 +-
src/util/virbuffer.h                               |    2 +
src/util/virstoragefile.c                          |    6 +-
src/util/virstoragefile.h                          |    2 +-
tests/Makefile.am                                  |   17 +-
tests/qemuhelptest.c                               |   14 +-
.../qemumonitorjson-nodename-1.result              |   15 -
.../qemumonitorjson-nodename-2.json                | 2270 --------------------
.../qemumonitorjson-nodename-2.result              |   60 -
.../qemumonitorjson-nodename-basic-blockstats.json |  166 ++
...emumonitorjson-nodename-basic-named-nodes.json} |   18 +-
.../qemumonitorjson-nodename-basic.result          |   16 +
...mumonitorjson-nodename-blockjob-blockstats.json |  301 +++
...umonitorjson-nodename-blockjob-named-nodes.json |  682 ++++++
.../qemumonitorjson-nodename-blockjob.result       |   26 +
.../qemumonitorjson-nodename-empty-blockstats.json |    2 +
...qemumonitorjson-nodename-empty-named-nodes.json |    2 +
.../qemumonitorjson-nodename-empty.result          |    1 +
...emumonitorjson-nodename-gluster-blockstats.json |  111 +
...umonitorjson-nodename-gluster-named-nodes.json} |   90 +-
.../qemumonitorjson-nodename-gluster.result        |   19 +-
.../qemumonitorjson-nodename-iscsi-blockstats.json |  113 +
...qemumonitorjson-nodename-iscsi-named-nodes.json |  114 +
.../qemumonitorjson-nodename-iscsi.result          |   13 +
.../qemumonitorjson-nodename-luks-blockstats.json  |   58 +
.../qemumonitorjson-nodename-luks-named-nodes.json |  109 +
.../qemumonitorjson-nodename-luks.result           |    6 +
.../qemumonitorjson-nodename-old-blockstats.json   |  160 ++
.../qemumonitorjson-nodename-old-named-nodes.json  |    2 +
.../qemumonitorjson-nodename-old.result            |    1 +
...mumonitorjson-nodename-relative-blockstats.json |  329 +++
...monitorjson-nodename-relative-named-nodes.json} |   26 +-
.../qemumonitorjson-nodename-relative.result       |   56 +-
...nitorjson-nodename-same-backing-blockstats.json |  221 ++
...torjson-nodename-same-backing-named-nodes.json} |   16 +-
.../qemumonitorjson-nodename-same-backing.result   |   32 +-
tests/qemumonitorjsontest.c                        |   97 +-
tests/testutils.c                                  |  101 +-
tests/testutils.h                                  |    6 +
...{virmacmapmock.c => virdeterministichashmock.c} |    0
tests/virmacmaptest.c                              |    2 +-
49 files changed, 2961 insertions(+), 2778 deletions(-)
delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-1.result
delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-2.json
delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-2.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-basic-blockstats.json
rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-1.json => qemumonitorjson-nodename-basic-named-nodes.json} (96%)
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-blockjob-blockstats.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-blockjob-named-nodes.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-blockjob.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-empty-blockstats.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-empty-named-nodes.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-empty.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-gluster-blockstats.json
rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-gluster.json => qemumonitorjson-nodename-gluster-named-nodes.json} (89%)
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-iscsi-blockstats.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-iscsi-named-nodes.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-iscsi.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-luks-blockstats.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-luks-named-nodes.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-luks.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-old-blockstats.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-old-named-nodes.json
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-old.result
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-relative-blockstats.json
rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-relative.json => qemumonitorjson-nodename-relative-named-nodes.json} (97%)
create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-same-backing-blockstats.json
rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-same-backing.json => qemumonitorjson-nodename-same-backing-named-nodes.json} (96%)
rename tests/{virmacmapmock.c => virdeterministichashmock.c} (100%)
[libvirt] [PATCH 00/24] qemu: refactor node name detection
Posted by Peter Krempa 6 years, 8 months ago
Since query-blockstats provides full hierarchy of node names without any doubtful
matching algorithm, use it to make the node name detector reliable.

Unfortunately some of the changes are ugly when viewed as a diff since they
delete and rewrite chunks of code.

This series can be fetched at:

 git fetch git://pipo.sk/pipo/libvirt.git node-name-detect-refactor-1

Peter Krempa (24):
  qemu: monitor: Extract call of 'query-blockstats' and add new API for
    it
  tests: qemumonitorjson: Consolidate basic node name detection test
    cases
  tests: qemumonitor: Prepare for more test data in
    testBlockNodeNameDetect
  tests: qemumonitorjson: Drop redundant data from
    testBlockNodeNameDetectFormat
  tests: utils: Don't calculate file size in virTestLoadFile
  util: buffer: Add virBufferStrcatVArgs
  tests: utils: Add virTestLoadFilePath helper
  tests: qemuhelp: convert to virTestLoadFilePath
  tests: utils: Add virTestLoadFileJSON helper
  tests: qemumonitorjson: simplify path handling in
    testBlockNodeNameDetect
  tests: qemumontitorjson: temporarily disable node name detection tests
  qemu: block: Rename qemuBlockFillNodeData and move it to the top
  util: storagefile: rename 'nodebacking' to 'nodestorage' in
    virStorageSource
  qemu: block: Refactor node name detection code
  tests: Extract mock library for making hash table deterministic
  tests: qemumonitorjson: Simplify node name detection test
  qemu: block: store and test driver names for detected storage nodes
  tests: qemumonitorjson: Add data and fix 'same-backing' node detection
    case
  tests: qemumonitorjson: Fix 'relative' node name detection test case
  tests: qemumonitorjson: Fix 'gluster' node name detection test case
  tests: qemumonitorjson: Add test case for node name detection with
    blockjob
  tests: qemumonitorjson: Old and empty test case for node name
    detection
  tests: qemumonitorjson: Test extraction of LUKS node names
  tests: qemumonitorjson: Test extraction of iSCSI device node names

 src/libvirt_private.syms                           |    1 +
 src/qemu/qemu_block.c                              |  344 ++-
 src/qemu/qemu_block.h                              |   12 +-
 src/qemu/qemu_driver.c                             |   10 +-
 src/qemu/qemu_monitor.c                            |   15 +
 src/qemu/qemu_monitor.h                            |    2 +
 src/qemu/qemu_monitor_json.c                       |   44 +-
 src/qemu/qemu_monitor_json.h                       |    2 +
 src/util/virbuffer.c                               |   27 +-
 src/util/virbuffer.h                               |    2 +
 src/util/virstoragefile.c                          |    6 +-
 src/util/virstoragefile.h                          |    2 +-
 tests/Makefile.am                                  |   17 +-
 tests/qemuhelptest.c                               |   14 +-
 .../qemumonitorjson-nodename-1.result              |   15 -
 .../qemumonitorjson-nodename-2.json                | 2270 --------------------
 .../qemumonitorjson-nodename-2.result              |   60 -
 .../qemumonitorjson-nodename-basic-blockstats.json |  166 ++
 ...emumonitorjson-nodename-basic-named-nodes.json} |   18 +-
 .../qemumonitorjson-nodename-basic.result          |   16 +
 ...mumonitorjson-nodename-blockjob-blockstats.json |  301 +++
 ...umonitorjson-nodename-blockjob-named-nodes.json |  682 ++++++
 .../qemumonitorjson-nodename-blockjob.result       |   26 +
 .../qemumonitorjson-nodename-empty-blockstats.json |    2 +
 ...qemumonitorjson-nodename-empty-named-nodes.json |    2 +
 .../qemumonitorjson-nodename-empty.result          |    1 +
 ...emumonitorjson-nodename-gluster-blockstats.json |  111 +
 ...umonitorjson-nodename-gluster-named-nodes.json} |   90 +-
 .../qemumonitorjson-nodename-gluster.result        |   19 +-
 .../qemumonitorjson-nodename-iscsi-blockstats.json |  113 +
 ...qemumonitorjson-nodename-iscsi-named-nodes.json |  114 +
 .../qemumonitorjson-nodename-iscsi.result          |   13 +
 .../qemumonitorjson-nodename-luks-blockstats.json  |   58 +
 .../qemumonitorjson-nodename-luks-named-nodes.json |  109 +
 .../qemumonitorjson-nodename-luks.result           |    6 +
 .../qemumonitorjson-nodename-old-blockstats.json   |  160 ++
 .../qemumonitorjson-nodename-old-named-nodes.json  |    2 +
 .../qemumonitorjson-nodename-old.result            |    1 +
 ...mumonitorjson-nodename-relative-blockstats.json |  329 +++
 ...monitorjson-nodename-relative-named-nodes.json} |   26 +-
 .../qemumonitorjson-nodename-relative.result       |   56 +-
 ...nitorjson-nodename-same-backing-blockstats.json |  221 ++
 ...torjson-nodename-same-backing-named-nodes.json} |   16 +-
 .../qemumonitorjson-nodename-same-backing.result   |   32 +-
 tests/qemumonitorjsontest.c                        |   97 +-
 tests/testutils.c                                  |  101 +-
 tests/testutils.h                                  |    6 +
 ...{virmacmapmock.c => virdeterministichashmock.c} |    0
 tests/virmacmaptest.c                              |    2 +-
 49 files changed, 2961 insertions(+), 2778 deletions(-)
 delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-1.result
 delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-2.json
 delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-2.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-basic-blockstats.json
 rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-1.json => qemumonitorjson-nodename-basic-named-nodes.json} (96%)
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-blockjob-blockstats.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-blockjob-named-nodes.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-blockjob.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-empty-blockstats.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-empty-named-nodes.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-empty.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-gluster-blockstats.json
 rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-gluster.json => qemumonitorjson-nodename-gluster-named-nodes.json} (89%)
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-iscsi-blockstats.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-iscsi-named-nodes.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-iscsi.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-luks-blockstats.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-luks-named-nodes.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-luks.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-old-blockstats.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-old-named-nodes.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-old.result
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-relative-blockstats.json
 rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-relative.json => qemumonitorjson-nodename-relative-named-nodes.json} (97%)
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-nodename-same-backing-blockstats.json
 rename tests/qemumonitorjsondata/{qemumonitorjson-nodename-same-backing.json => qemumonitorjson-nodename-same-backing-named-nodes.json} (96%)
 rename tests/{virmacmapmock.c => virdeterministichashmock.c} (100%)

-- 
2.13.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 00/24] qemu: refactor node name detection
Posted by Eric Blake 6 years, 8 months ago
On 07/26/2017 05:00 AM, Peter Krempa wrote:
> Since query-blockstats provides full hierarchy of node names without any doubtful
> matching algorithm, use it to make the node name detector reliable.
> 
> Unfortunately some of the changes are ugly when viewed as a diff since they
> delete and rewrite chunks of code.
> 
> This series can be fetched at:
> 
>  git fetch git://pipo.sk/pipo/libvirt.git node-name-detect-refactor-1

So far, I've just reviewed the patches, and found a few things to fix
although the overall impression was good.  I still hope to build and see
if I can manage to find problems in my own testing, but don't let that
be a bottleneck if you are trying to get this in before Thursday
morning's freeze (ie. we can do followup patches if I find something
later, if you can't wait for me to report results).

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 00/24] qemu: refactor node name detection
Posted by Peter Krempa 6 years, 8 months ago
On Wed, Jul 26, 2017 at 17:20:33 -0500, Eric Blake wrote:
> On 07/26/2017 05:00 AM, Peter Krempa wrote:
> > Since query-blockstats provides full hierarchy of node names without any doubtful
> > matching algorithm, use it to make the node name detector reliable.
> > 
> > Unfortunately some of the changes are ugly when viewed as a diff since they
> > delete and rewrite chunks of code.
> > 
> > This series can be fetched at:
> > 
> >  git fetch git://pipo.sk/pipo/libvirt.git node-name-detect-refactor-1
> 
> So far, I've just reviewed the patches, and found a few things to fix
> although the overall impression was good.  I still hope to build and see
> if I can manage to find problems in my own testing, but don't let that
> be a bottleneck if you are trying to get this in before Thursday
> morning's freeze (ie. we can do followup patches if I find something
> later, if you can't wait for me to report results).

I've pushed 23 of the 24 patches that had the R-b tag. I'll try to come
up wit a better solution for the 'nothing' marker.

Thanks for the very quick review.
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list