[Qemu-devel] [PATCH v4 0/4] RFC: simplify qobject refcount

Marc-André Lureau posted 4 patches 5 years, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180413161842.5117-1-marcandre.lureau@redhat.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test s390x passed
scripts/qapi/events.py              |   2 +-
include/qapi/qmp/qbool.h            |   2 +-
include/qapi/qmp/qdict.h            |   2 +-
include/qapi/qmp/qlist.h            |   2 +-
include/qapi/qmp/qnull.h            |   5 +-
include/qapi/qmp/qnum.h             |   2 +-
include/qapi/qmp/qobject.h          |  73 ++++++++++---------
include/qapi/qmp/qstring.h          |   2 +-
block.c                             |  82 ++++++++++-----------
block/blkdebug.c                    |   7 +-
block/blkverify.c                   |   8 +--
block/crypto.c                      |   4 +-
block/gluster.c                     |   4 +-
block/iscsi.c                       |   2 +-
block/nbd.c                         |   4 +-
block/nfs.c                         |   4 +-
block/null.c                        |   3 +-
block/nvme.c                        |   3 +-
block/parallels.c                   |   4 +-
block/qapi.c                        |   2 +-
block/qcow.c                        |   8 +--
block/qcow2.c                       |   8 +--
block/qed.c                         |   4 +-
block/quorum.c                      |   4 +-
block/rbd.c                         |  14 ++--
block/sheepdog.c                    |  12 ++--
block/snapshot.c                    |   4 +-
block/ssh.c                         |   4 +-
block/vdi.c                         |   2 +-
block/vhdx.c                        |   4 +-
block/vpc.c                         |   4 +-
block/vvfat.c                       |   2 +-
block/vxhs.c                        |   2 +-
blockdev.c                          |  16 ++---
hw/i386/acpi-build.c                |  12 ++--
hw/ppc/spapr_drc.c                  |   2 +-
hw/usb/xen-usb.c                    |   4 +-
migration/migration.c               |   4 +-
migration/qjson.c                   |   2 +-
monitor.c                           |  57 +++++++--------
qapi/qapi-dealloc-visitor.c         |   4 +-
qapi/qmp-dispatch.c                 |   6 +-
qapi/qobject-input-visitor.c        |  10 ++-
qapi/qobject-output-visitor.c       |  11 ++-
qemu-img.c                          |  18 ++---
qemu-io.c                           |   6 +-
qga/main.c                          |  12 ++--
qmp.c                               |   4 +-
qobject/json-parser.c               |  10 +--
qobject/qdict.c                     |  49 +++++--------
qobject/qjson.c                     |   2 +-
qobject/qlist.c                     |   4 +-
qobject/qobject.c                   |  21 ++++--
qom/object.c                        |  16 ++---
qom/object_interfaces.c             |   2 +-
target/ppc/translate_init.c         |   2 +-
target/s390x/cpu_models.c           |   2 +-
tests/ahci-test.c                   |   6 +-
tests/check-qdict.c                 | 106 ++++++++++++++--------------
tests/check-qjson.c                 |  84 +++++++++++-----------
tests/check-qlist.c                 |   8 +--
tests/check-qlit.c                  |  10 +--
tests/check-qnull.c                 |  10 +--
tests/check-qnum.c                  |  28 ++++----
tests/check-qobject.c               |   2 +-
tests/check-qstring.c               |  10 +--
tests/cpu-plug-test.c               |   4 +-
tests/device-introspect-test.c      |  24 +++----
tests/drive_del-test.c              |   4 +-
tests/libqos/libqos.c               |   8 +--
tests/libqos/pci-pc.c               |   2 +-
tests/libqtest.c                    |  24 +++----
tests/machine-none-test.c           |   2 +-
tests/migration-test.c              |  24 +++----
tests/numa-test.c                   |  16 ++---
tests/pvpanic-test.c                |   2 +-
tests/q35-test.c                    |   2 +-
tests/qmp-test.c                    |  38 +++++-----
tests/qom-test.c                    |   8 +--
tests/tco-test.c                    |  12 ++--
tests/test-char.c                   |   2 +-
tests/test-keyval.c                 |  82 ++++++++++-----------
tests/test-netfilter.c              |  26 +++----
tests/test-qemu-opts.c              |  14 ++--
tests/test-qga.c                    |  76 ++++++++++----------
tests/test-qmp-cmds.c               |  24 +++----
tests/test-qmp-event.c              |   2 +-
tests/test-qobject-input-visitor.c  |  10 +--
tests/test-qobject-output-visitor.c |  18 ++---
tests/test-visitor-serialization.c  |   6 +-
tests/test-x86-cpuid-compat.c       |  14 ++--
tests/tmp105-test.c                 |   4 +-
tests/vhost-user-test.c             |   6 +-
tests/virtio-net-test.c             |   6 +-
tests/vmgenid-test.c                |   2 +-
tests/wdt_ib700-test.c              |  14 ++--
util/keyval.c                       |  12 ++--
util/qemu-config.c                  |   4 +-
docs/devel/qapi-code-gen.txt        |   2 +-
scripts/coccinelle/qobject.cocci    |   8 +--
100 files changed, 662 insertions(+), 669 deletions(-)
[Qemu-devel] [PATCH v4 0/4] RFC: simplify qobject refcount
Posted by Marc-André Lureau 5 years, 11 months ago
Hi,

This series aims to get rid of the distinction between QObject, that
must use qobject_incref/qobject_decref and its various derived types
that have to use QINCREF/QDECREF. Instead, replace it with
qobject_ref/qobject_unref for all types.

v4:
- rename QObjectCommon->QObjectBase_
- add back qobject_ref_impl/qobject_unref_impl
- add extra parenthesis for qobject_ref() cast
- commit message tweaks

v3: after v2 review with Eric and Paolo
- fix clang ubsan warning when a null pointer is given to QOBJECT.
- add a patch to make qobject_ref() assert on null pointer, and return
  the same pointer, simplifying some code.

v2:
- use the QObjectCommon base approach suggested by Paolo and Eric
- remove need for QEMU_GENERIC

Marc-André Lureau (4):
  qobject: ensure base is at offset 0
  qobject: use a QObjectBase_ struct
  qobject: replace qobject_incref/QINCREF qobject_decref/QDECREF
  qobject: modify qobject_ref() to assert on NULL and return obj

 scripts/qapi/events.py              |   2 +-
 include/qapi/qmp/qbool.h            |   2 +-
 include/qapi/qmp/qdict.h            |   2 +-
 include/qapi/qmp/qlist.h            |   2 +-
 include/qapi/qmp/qnull.h            |   5 +-
 include/qapi/qmp/qnum.h             |   2 +-
 include/qapi/qmp/qobject.h          |  73 ++++++++++---------
 include/qapi/qmp/qstring.h          |   2 +-
 block.c                             |  82 ++++++++++-----------
 block/blkdebug.c                    |   7 +-
 block/blkverify.c                   |   8 +--
 block/crypto.c                      |   4 +-
 block/gluster.c                     |   4 +-
 block/iscsi.c                       |   2 +-
 block/nbd.c                         |   4 +-
 block/nfs.c                         |   4 +-
 block/null.c                        |   3 +-
 block/nvme.c                        |   3 +-
 block/parallels.c                   |   4 +-
 block/qapi.c                        |   2 +-
 block/qcow.c                        |   8 +--
 block/qcow2.c                       |   8 +--
 block/qed.c                         |   4 +-
 block/quorum.c                      |   4 +-
 block/rbd.c                         |  14 ++--
 block/sheepdog.c                    |  12 ++--
 block/snapshot.c                    |   4 +-
 block/ssh.c                         |   4 +-
 block/vdi.c                         |   2 +-
 block/vhdx.c                        |   4 +-
 block/vpc.c                         |   4 +-
 block/vvfat.c                       |   2 +-
 block/vxhs.c                        |   2 +-
 blockdev.c                          |  16 ++---
 hw/i386/acpi-build.c                |  12 ++--
 hw/ppc/spapr_drc.c                  |   2 +-
 hw/usb/xen-usb.c                    |   4 +-
 migration/migration.c               |   4 +-
 migration/qjson.c                   |   2 +-
 monitor.c                           |  57 +++++++--------
 qapi/qapi-dealloc-visitor.c         |   4 +-
 qapi/qmp-dispatch.c                 |   6 +-
 qapi/qobject-input-visitor.c        |  10 ++-
 qapi/qobject-output-visitor.c       |  11 ++-
 qemu-img.c                          |  18 ++---
 qemu-io.c                           |   6 +-
 qga/main.c                          |  12 ++--
 qmp.c                               |   4 +-
 qobject/json-parser.c               |  10 +--
 qobject/qdict.c                     |  49 +++++--------
 qobject/qjson.c                     |   2 +-
 qobject/qlist.c                     |   4 +-
 qobject/qobject.c                   |  21 ++++--
 qom/object.c                        |  16 ++---
 qom/object_interfaces.c             |   2 +-
 target/ppc/translate_init.c         |   2 +-
 target/s390x/cpu_models.c           |   2 +-
 tests/ahci-test.c                   |   6 +-
 tests/check-qdict.c                 | 106 ++++++++++++++--------------
 tests/check-qjson.c                 |  84 +++++++++++-----------
 tests/check-qlist.c                 |   8 +--
 tests/check-qlit.c                  |  10 +--
 tests/check-qnull.c                 |  10 +--
 tests/check-qnum.c                  |  28 ++++----
 tests/check-qobject.c               |   2 +-
 tests/check-qstring.c               |  10 +--
 tests/cpu-plug-test.c               |   4 +-
 tests/device-introspect-test.c      |  24 +++----
 tests/drive_del-test.c              |   4 +-
 tests/libqos/libqos.c               |   8 +--
 tests/libqos/pci-pc.c               |   2 +-
 tests/libqtest.c                    |  24 +++----
 tests/machine-none-test.c           |   2 +-
 tests/migration-test.c              |  24 +++----
 tests/numa-test.c                   |  16 ++---
 tests/pvpanic-test.c                |   2 +-
 tests/q35-test.c                    |   2 +-
 tests/qmp-test.c                    |  38 +++++-----
 tests/qom-test.c                    |   8 +--
 tests/tco-test.c                    |  12 ++--
 tests/test-char.c                   |   2 +-
 tests/test-keyval.c                 |  82 ++++++++++-----------
 tests/test-netfilter.c              |  26 +++----
 tests/test-qemu-opts.c              |  14 ++--
 tests/test-qga.c                    |  76 ++++++++++----------
 tests/test-qmp-cmds.c               |  24 +++----
 tests/test-qmp-event.c              |   2 +-
 tests/test-qobject-input-visitor.c  |  10 +--
 tests/test-qobject-output-visitor.c |  18 ++---
 tests/test-visitor-serialization.c  |   6 +-
 tests/test-x86-cpuid-compat.c       |  14 ++--
 tests/tmp105-test.c                 |   4 +-
 tests/vhost-user-test.c             |   6 +-
 tests/virtio-net-test.c             |   6 +-
 tests/vmgenid-test.c                |   2 +-
 tests/wdt_ib700-test.c              |  14 ++--
 util/keyval.c                       |  12 ++--
 util/qemu-config.c                  |   4 +-
 docs/devel/qapi-code-gen.txt        |   2 +-
 scripts/coccinelle/qobject.cocci    |   8 +--
 100 files changed, 662 insertions(+), 669 deletions(-)

-- 
2.17.0.rc1.36.gcedb63ea2f