All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v6 0/5] Simplify qobject refcount
@ 2018-04-19 15:01 Marc-André Lureau
  2018-04-19 15:01 ` [Qemu-devel] [PATCH v6 1/5] qobject: ensure base is at offset 0 Marc-André Lureau
                   ` (6 more replies)
  0 siblings, 7 replies; 27+ messages in thread
From: Marc-André Lureau @ 2018-04-19 15:01 UTC (permalink / raw)
  To: qemu-devel; +Cc: eblake, berrange, armbru, pbonzini, Marc-André Lureau

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.

v6: after Eric and Markus reviews
- remove double-underscore identifier in QOBJECT macro
- remove type cast in qobject_ref() in patch 4
- drop some now useless comment in code in patch 4
- update commit messages
- add some r-b tags from Eric

v5: after Markus review
- various commit message & comments update
- split the object_ref() patch to assert() on NULL, and return obj
- drop RFC from cover letter

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 (5):
  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 return obj
  qobject: modify qobject_ref() to assert on NULL

 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          |  83 +++++++++++++---------
 include/qapi/qmp/qstring.h          |   2 +-
 block.c                             |  87 ++++++++++++-----------
 block/blkdebug.c                    |   8 +--
 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                      |   5 +-
 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                           |  58 +++++++--------
 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, 675 insertions(+), 674 deletions(-)

-- 
2.17.0.253.g3dd125b46d

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2018-05-02 14:14 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-19 15:01 [Qemu-devel] [PATCH v6 0/5] Simplify qobject refcount Marc-André Lureau
2018-04-19 15:01 ` [Qemu-devel] [PATCH v6 1/5] qobject: ensure base is at offset 0 Marc-André Lureau
2018-04-19 15:20   ` Eric Blake
2018-04-19 15:23     ` Marc-André Lureau
2018-04-24 12:18       ` Markus Armbruster
2018-04-24 12:34         ` Peter Maydell
2018-04-24 15:24           ` Markus Armbruster
2018-04-26 14:50         ` Markus Armbruster
2018-04-27  8:14   ` Markus Armbruster
2018-04-19 15:01 ` [Qemu-devel] [PATCH v6 2/5] qobject: use a QObjectBase_ struct Marc-André Lureau
2018-04-27  8:24   ` Markus Armbruster
2018-04-27 15:29     ` Eric Blake
2018-04-19 15:01 ` [Qemu-devel] [PATCH v6 3/5] qobject: replace qobject_incref/QINCREF qobject_decref/QDECREF Marc-André Lureau
2018-04-19 15:27   ` Eric Blake
2018-04-27  8:59     ` Markus Armbruster
2018-04-19 15:01 ` [Qemu-devel] [PATCH v6 4/5] qobject: modify qobject_ref() to return obj Marc-André Lureau
2018-04-19 15:32   ` Eric Blake
2018-04-27 11:42     ` Markus Armbruster
2018-05-02 13:28       ` Eric Blake
2018-05-02 14:14         ` Markus Armbruster
2018-04-27  8:50   ` Markus Armbruster
2018-04-19 15:01 ` [Qemu-devel] [PATCH v6 5/5] qobject: modify qobject_ref() to assert on NULL Marc-André Lureau
2018-04-19 15:39   ` Eric Blake
2018-04-19 16:04     ` Marc-André Lureau
2018-04-19 15:45 ` [Qemu-devel] [PATCH v6 0/5] Simplify qobject refcount Eric Blake
2018-04-19 16:02   ` Marc-André Lureau
2018-05-02  8:31 ` Markus Armbruster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.