[PATCH v2 00/22] qapi: Kill 'qapi/qmp/qerror.h' for good

Philippe Mathieu-Daudé posted 22 patches 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20231005045041.52649-1-philmd@linaro.org
Maintainers: "Gonglei (Arei)" <arei.gonglei@huawei.com>, Zhenwei Pi <pizhenwei@bytedance.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Amit Shah <amit@kernel.org>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Alberto Garcia <berto@igalia.com>, Fam Zheng <fam@euphon.net>, John Snow <jsnow@redhat.com>, Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, "Cédric Le Goater" <clg@kaod.org>, David Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora <harshpb@linux.ibm.com>, Gerd Hoffmann <kraxel@redhat.com>, Markus Armbruster <armbru@redhat.com>, Juan Quintela <quintela@redhat.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Leonardo Bras <leobras@redhat.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Jason Wang <jasowang@redhat.com>, Michael Roth <michael.roth@amd.com>, Konstantin Kostiuk <kkostiuk@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, David Hildenbrand <david@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Stefan Berger <stefanb@linux.vnet.ibm.com>, Peter Maydell <peter.maydell@linaro.org>, Thomas Huth <thuth@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>
qga/qapi-schema.json             |   5 +-
include/qapi/qmp/qerror.h        |  62 -------------------
backends/cryptodev-vhost-user.c  |   5 +-
backends/dbus-vmstate.c          |   3 +-
backends/rng-egd.c               |   5 +-
backends/rng-random.c            |   4 +-
block/gluster.c                  |  22 +++----
block/monitor/block-hmp-cmds.c   |   7 +--
block/quorum.c                   |   4 +-
block/snapshot.c                 |   5 +-
block/vmdk.c                     |   9 ++-
blockdev.c                       |  16 +++--
blockjob.c                       |   4 +-
chardev/char-fe.c                |   3 +-
chardev/char.c                   |   4 +-
dump/dump.c                      |  11 ++--
dump/win_dump.c                  |   5 +-
hw/core/qdev-properties-system.c |   6 +-
hw/core/qdev-properties.c        |   3 +-
hw/core/qdev.c                   |   4 +-
hw/intc/openpic.c                |   4 +-
hw/ppc/spapr_pci.c               |   5 +-
hw/usb/redirect.c                |   7 +--
migration/migration.c            |   7 +--
migration/options.c              | 102 +++++++++++++------------------
migration/page_cache.c           |   9 ++-
migration/ram.c                  |   5 +-
migration/savevm.c               |   7 +--
monitor/fds.c                    |   9 ++-
monitor/hmp-cmds.c               |   3 +-
monitor/qmp-cmds.c               |   4 +-
net/filter-buffer.c              |   4 +-
net/filter.c                     |   8 +--
net/net.c                        |  10 ++-
qapi/opts-visitor.c              |  12 ++--
qapi/qapi-forward-visitor.c      |   3 +-
qapi/qapi-util.c                 |   4 +-
qapi/qapi-visit-core.c           |   5 +-
qapi/qobject-input-visitor.c     |  53 ++++++++--------
qapi/string-input-visitor.c      |  27 ++++----
qga/commands-bsd.c               |   9 ++-
qga/commands-posix.c             |  47 +++++++-------
qga/commands-win32.c             |  65 ++++++++++----------
qga/commands.c                   |  10 +--
qom/object.c                     |  16 +++--
qom/object_interfaces.c          |   3 +-
qom/qom-qmp-cmds.c               |   8 +--
softmmu/balloon.c                |   3 +-
softmmu/cpus.c                   |   8 +--
softmmu/qdev-monitor.c           |  24 ++++----
softmmu/rtc.c                    |   1 -
softmmu/tpm.c                    |   8 +--
softmmu/vl.c                     |   5 +-
target/arm/arm-qmp-cmds.c        |   4 +-
target/i386/cpu.c                |  15 +++--
target/s390x/cpu_models_sysemu.c |   4 +-
ui/input-barrier.c               |   3 +-
ui/ui-qmp-cmds.c                 |   7 +--
util/block-helpers.c             |   4 +-
util/qemu-option.c               |  21 +++----
scripts/qapi/visit.py            |   5 +-
61 files changed, 308 insertions(+), 437 deletions(-)
delete mode 100644 include/qapi/qmp/qerror.h
[PATCH v2 00/22] qapi: Kill 'qapi/qmp/qerror.h' for good
Posted by Philippe Mathieu-Daudé 7 months ago
Since v1:
- Fixed checkpatch warnings (Juan)
- Added R-b tags
- New patch for 'vcpu_dirty_limit'

Hi,

This is kind of a selfish series. I'm really tired to grep
and read this comment from 2015 in qapi/qmp/qerror.h:
      /*
       * These macros will go away, please don't use
       * in new code, and do not add new ones!
       */

Besides, these definitions are still added in recent code
(see for example commit 09f9ec9913 from June 2023). So
let's finish with this 8 years old technical debt.

Overall it took me 3h: 1h to find the correct Coccinelle
doc about Python use and read it again [*], then 1h to
adapt the script for each patch, rest is testing and
writing comments, so the scripts used could be used as
reference later.

Regards,

Phil.

[*] https://www.lrz.de/services/compute/courses/x_lecturenotes/hspc1w19.pdf

Philippe Mathieu-Daudé (22):
  qapi: Inline and remove QERR_BUS_NO_HOTPLUG definition
  qapi: Inline and remove QERR_DEVICE_HAS_NO_MEDIUM definition
  qapi: Inline and remove QERR_DEVICE_IN_USE definition
  qapi: Inline and remove QERR_DEVICE_NO_HOTPLUG definition
  qapi: Inline QERR_INVALID_PARAMETER definition (constant parameter)
  qapi: Inline and remove QERR_INVALID_PARAMETER definition
  qapi: Inline QERR_INVALID_PARAMETER_TYPE definition (constant param)
  qapi: Inline QERR_INVALID_PARAMETER_TYPE definition (constant value)
  qapi: Inline and remove QERR_INVALID_PARAMETER_TYPE definition
  qapi: Correct error message for 'vcpu_dirty_limit' parameter
  qapi: Inline QERR_INVALID_PARAMETER_VALUE definition (constant value)
  qapi: Inline QERR_INVALID_PARAMETER_VALUE definition (constant param)
  qapi: Inline and remove QERR_INVALID_PARAMETER_VALUE definition
  qapi: Inline and remove QERR_IO_ERROR definition
  qapi: Inline and remove QERR_MIGRATION_ACTIVE definition
  qapi: Inline QERR_MISSING_PARAMETER definition (constant parameter)
  qapi: Inline and remove QERR_MISSING_PARAMETER definition
  qapi: Inline and remove QERR_PROPERTY_VALUE_BAD definition
  qapi: Inline and remove QERR_PROPERTY_VALUE_OUT_OF_RANGE definition
  qapi: Inline and remove QERR_QGA_COMMAND_FAILED  definition
  RFC qapi: Inline and remove QERR_UNSUPPORTED definition
  qapi: Remove 'qapi/qmp/qerror.h' header

 qga/qapi-schema.json             |   5 +-
 include/qapi/qmp/qerror.h        |  62 -------------------
 backends/cryptodev-vhost-user.c  |   5 +-
 backends/dbus-vmstate.c          |   3 +-
 backends/rng-egd.c               |   5 +-
 backends/rng-random.c            |   4 +-
 block/gluster.c                  |  22 +++----
 block/monitor/block-hmp-cmds.c   |   7 +--
 block/quorum.c                   |   4 +-
 block/snapshot.c                 |   5 +-
 block/vmdk.c                     |   9 ++-
 blockdev.c                       |  16 +++--
 blockjob.c                       |   4 +-
 chardev/char-fe.c                |   3 +-
 chardev/char.c                   |   4 +-
 dump/dump.c                      |  11 ++--
 dump/win_dump.c                  |   5 +-
 hw/core/qdev-properties-system.c |   6 +-
 hw/core/qdev-properties.c        |   3 +-
 hw/core/qdev.c                   |   4 +-
 hw/intc/openpic.c                |   4 +-
 hw/ppc/spapr_pci.c               |   5 +-
 hw/usb/redirect.c                |   7 +--
 migration/migration.c            |   7 +--
 migration/options.c              | 102 +++++++++++++------------------
 migration/page_cache.c           |   9 ++-
 migration/ram.c                  |   5 +-
 migration/savevm.c               |   7 +--
 monitor/fds.c                    |   9 ++-
 monitor/hmp-cmds.c               |   3 +-
 monitor/qmp-cmds.c               |   4 +-
 net/filter-buffer.c              |   4 +-
 net/filter.c                     |   8 +--
 net/net.c                        |  10 ++-
 qapi/opts-visitor.c              |  12 ++--
 qapi/qapi-forward-visitor.c      |   3 +-
 qapi/qapi-util.c                 |   4 +-
 qapi/qapi-visit-core.c           |   5 +-
 qapi/qobject-input-visitor.c     |  53 ++++++++--------
 qapi/string-input-visitor.c      |  27 ++++----
 qga/commands-bsd.c               |   9 ++-
 qga/commands-posix.c             |  47 +++++++-------
 qga/commands-win32.c             |  65 ++++++++++----------
 qga/commands.c                   |  10 +--
 qom/object.c                     |  16 +++--
 qom/object_interfaces.c          |   3 +-
 qom/qom-qmp-cmds.c               |   8 +--
 softmmu/balloon.c                |   3 +-
 softmmu/cpus.c                   |   8 +--
 softmmu/qdev-monitor.c           |  24 ++++----
 softmmu/rtc.c                    |   1 -
 softmmu/tpm.c                    |   8 +--
 softmmu/vl.c                     |   5 +-
 target/arm/arm-qmp-cmds.c        |   4 +-
 target/i386/cpu.c                |  15 +++--
 target/s390x/cpu_models_sysemu.c |   4 +-
 ui/input-barrier.c               |   3 +-
 ui/ui-qmp-cmds.c                 |   7 +--
 util/block-helpers.c             |   4 +-
 util/qemu-option.c               |  21 +++----
 scripts/qapi/visit.py            |   5 +-
 61 files changed, 308 insertions(+), 437 deletions(-)
 delete mode 100644 include/qapi/qmp/qerror.h

-- 
2.41.0


Re: [PATCH v2 00/22] qapi: Kill 'qapi/qmp/qerror.h' for good
Posted by Markus Armbruster 7 months ago
Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> Since v1:
> - Fixed checkpatch warnings (Juan)
> - Added R-b tags
> - New patch for 'vcpu_dirty_limit'
>
> Hi,
>
> This is kind of a selfish series. I'm really tired to grep
> and read this comment from 2015 in qapi/qmp/qerror.h:
>       /*
>        * These macros will go away, please don't use
>        * in new code, and do not add new ones!
>        */
>
> Besides, these definitions are still added in recent code
> (see for example commit 09f9ec9913 from June 2023). So
> let's finish with this 8 years old technical debt.

Gee, a late birthday present for me!  Thank you!

> Overall it took me 3h: 1h to find the correct Coccinelle
> doc about Python use and read it again [*], then 1h to
> adapt the script for each patch, rest is testing and
> writing comments, so the scripts used could be used as
> reference later.

By the time you're done, it'll likely be 6h or more...
Re: [PATCH v2 00/22] qapi: Kill 'qapi/qmp/qerror.h' for good
Posted by Markus Armbruster 6 months, 2 weeks ago
Your patches are sane, the problem is they made me look at the code they
patch, much of which is not fine.  Let's chat off list to figure out how
to best get your patches merged.