bdrv_reopen_prepare() assumes that all BDS options are strings, which is not necessarily correct. This series introduces a new qobject_is_equal() function which can be used to test whether any options have changed, independently of their type.
v4: - Patch 1: Kept, because Markus gave his R-b already... - Patch 2: Check that doubles match integers exactly, not just after the integer has been (lossily) converted to a double [Markus/Eric] - Patch 3: Winged comment and s/simply can not/can simply omit/ (:-() [Markus/Eric] - Patch 5: - Mention (at least one) reason for the non-reflexivity of qobject_is_equal() (that being NaN) [Eric] - Mention that NaN cannot occur in JSON [Eric] - Tests for integer values that cannot be exactly represented as a double git-backport-diff against v3: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/5:[----] [--] 'qapi/qnull: Add own header' 002/5:[0032] [FC] 'qapi: Add qobject_is_equal()' 003/5:[0022] [FC] 'block: qobject_is_equal() in bdrv_reopen_prepare()' 004/5:[----] [--] 'iotests: Add test for non-string option reopening' 005/5:[0114] [FC] 'tests: Add check-qobject for equality tests' Max Reitz (5): qapi/qnull: Add own header qapi: Add qobject_is_equal() block: qobject_is_equal() in bdrv_reopen_prepare() iotests: Add test for non-string option reopening tests: Add check-qobject for equality tests tests/Makefile.include | 4 +- include/qapi/qmp/qbool.h | 1 + include/qapi/qmp/qdict.h | 1 + include/qapi/qmp/qlist.h | 1 + include/qapi/qmp/qnull.h | 28 ++++ include/qapi/qmp/qnum.h | 1 + include/qapi/qmp/qobject.h | 17 +- include/qapi/qmp/qstring.h | 1 + include/qapi/qmp/types.h | 1 + block.c | 29 ++-- qobject/qbool.c | 8 + qobject/qdict.c | 29 ++++ qobject/qlist.c | 32 ++++ qobject/qnull.c | 11 +- qobject/qnum.c | 77 +++++++++ qobject/qobject.c | 29 ++++ qobject/qstring.c | 9 + tests/check-qnull.c | 2 +- tests/check-qobject.c | 404 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/133 | 9 + tests/qemu-iotests/133.out | 5 + 21 files changed, 677 insertions(+), 22 deletions(-) create mode 100644 include/qapi/qmp/qnull.h create mode 100644 tests/check-qobject.c -- 2.9.4