[PATCH v3 00/25] error: auto propagated local_err

Vladimir Sementsov-Ogievskiy posted 25 patches 4 years, 7 months ago
Test checkpatch failed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test asan passed
Test FreeBSD passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190924200902.4703-1-vsementsov@virtuozzo.com
Maintainers: Richard Henderson <rth@twiddle.net>, Eduardo Habkost <ehabkost@redhat.com>, Aleksandar Rikalo <arikalo@wavecomp.com>, Paolo Bonzini <pbonzini@redhat.com>, Halil Pasic <pasic@linux.ibm.com>, Gerd Hoffmann <kraxel@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Eric Blake <eblake@redhat.com>, Eric Farman <farman@linux.ibm.com>, Jason Wang <jasowang@redhat.com>, Yuval Shaia <yuval.shaia@oracle.com>, Max Reitz <mreitz@redhat.com>, Alex Williamson <alex.williamson@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Fam Zheng <fam@euphon.net>, Markus Armbruster <armbru@redhat.com>, Paul Burton <pburton@wavecomp.com>, "Daniel P. Berrangé" <berrange@redhat.com>, David Hildenbrand <david@redhat.com>, Juan Quintela <quintela@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, John Snow <jsnow@redhat.com>, Christian Borntraeger <borntraeger@de.ibm.com>, "Michael S. Tsirkin" <mst@redhat.com>, Jeff Cody <codyprime@gmail.com>, Greg Kurz <groug@kaod.org>, David Gibson <david@gibson.dropbear.id.au>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Michael Roth <mdroth@linux.vnet.ibm.com>
There is a newer version of this series
include/monitor/hmp.h                         |  2 +-
include/qapi/error.h                          | 37 +++++++++-
ui/vnc.h                                      |  2 +-
block/backup.c                                |  1 +
block/dirty-bitmap.c                          |  1 +
block/file-posix.c                            |  3 +
block/gluster.c                               |  2 +
block/qcow.c                                  |  1 +
block/qcow2.c                                 |  1 +
block/vhdx-log.c                              |  1 +
block/vpc.c                                   |  1 +
chardev/spice.c                               |  1 +
hw/9pfs/9p-local.c                            |  1 +
hw/9pfs/9p-proxy.c                            |  1 +
hw/arm/msf2-soc.c                             |  1 +
hw/arm/virt.c                                 |  2 +
hw/core/loader-fit.c                          |  1 +
hw/intc/arm_gicv3_kvm.c                       |  1 +
hw/misc/msf2-sysreg.c                         |  1 +
hw/pci-bridge/pcie_root_port.c                |  1 +
hw/ppc/mac_newworld.c                         |  1 +
hw/ppc/spapr.c                                |  1 +
hw/ppc/spapr_pci.c                            |  1 +
hw/rdma/vmw/pvrdma_main.c                     |  1 +
hw/s390x/s390-ccw.c                           |  1 +
hw/scsi/scsi-disk.c                           |  1 +
hw/scsi/scsi-generic.c                        |  1 +
hw/usb/ccid-card-emulated.c                   |  1 +
hw/vfio/common.c                              |  2 +
hw/vfio/pci.c                                 |  2 +
hw/virtio/virtio-pci.c                        |  2 +
migration/migration.c                         |  1 +
monitor/hmp-cmds.c                            |  8 +--
nbd/client.c                                  |  1 +
nbd/server.c                                  |  1 +
net/net.c                                     | 17 ++---
qdev-monitor.c                                |  2 +
target/ppc/kvm.c                              |  2 +
ui/vnc.c                                      | 10 +--
util/error.c                                  |  8 +--
util/qemu-option.c                            |  2 +
util/qemu-sockets.c                           |  2 +
python/commit-per-subsystem.py                | 69 +++++++++++++++++++
.../fix-error_append_hint-usage.cocci         | 25 +++++++
44 files changed, 198 insertions(+), 26 deletions(-)
create mode 100755 python/commit-per-subsystem.py
create mode 100644 scripts/coccinelle/fix-error_append_hint-usage.cocci
[PATCH v3 00/25] error: auto propagated local_err
Posted by Vladimir Sementsov-Ogievskiy 4 years, 7 months ago
Hi all!

Here is a proposal of auto propagation for local_err, to not call
error_propagate on every exit point, when we deal with local_err.

There are also two issues with errp:

1. error_fatal & error_append_hint: user can't see these
hints, because exit() happens in error_setg earlier than hint is
appended. [Reported by Greg Kurz]

2. error_abort & error_propagate: when we wrap
error_abort by local_err+error_propagate, resulting coredump will
refer to error_propagate and not to the place where error happened.
(the macro itself don't fix the issue, but it allows to [3.] drop all
local_err+error_propagate pattern, which will definitely fix the issue)
[Reported by Kevin Wolf]

Still, applying new macro to all errp-functions is a huge task, which is
impossible to solve in one series.

So, here is a minimum: solve only [1.], by adding new macro to all
errp-functions which wants to call error_append_hint.

v3: plan B: fix only error_append_hint users, as a first step.
01: - new errp-based API dropped, so now patch is smaller.
    - slightly adjust commit message
    - keep Eric's r-b
02: - no new API, so just open-code fix
    - keep Eric's r-b
03: - simplify the code [Eric]
04: - grammar and wording
    - drop extra unused variable
others: new

Vladimir Sementsov-Ogievskiy (25):
  errp: rename errp to errp_in where it is IN-argument
  hw/core/loader-fit: fix freeing errp in fit_load_fdt
  net/net: fix local variable shadowing in net_client_init
  error: auto propagated local_err
  scripts: add coccinelle script to fix error_append_hint usage
  python: add commit-per-subsystem.py
  s390: Fix error_append_hint usage
  ARM TCG CPUs: Fix error_append_hint usage
  PowerPC TCG CPUs: Fix error_append_hint usage
  arm: Fix error_append_hint usage
  SmartFusion2: Fix error_append_hint usage
  PCI: Fix error_append_hint usage
  SCSI: Fix error_append_hint usage
  USB: Fix error_append_hint usage
  VFIO: Fix error_append_hint usage
  virtio: Fix error_append_hint usage
  virtio-9p: Fix error_append_hint usage
  block: Fix error_append_hint usage
  chardev: Fix error_append_hint usage
  cmdline: Fix error_append_hint usage
  QOM: Fix error_append_hint usage
  Migration: Fix error_append_hint usage
  Sockets: Fix error_append_hint usage
  nbd: Fix error_append_hint usage
  PVRDMA: Fix error_append_hint usage

 include/monitor/hmp.h                         |  2 +-
 include/qapi/error.h                          | 37 +++++++++-
 ui/vnc.h                                      |  2 +-
 block/backup.c                                |  1 +
 block/dirty-bitmap.c                          |  1 +
 block/file-posix.c                            |  3 +
 block/gluster.c                               |  2 +
 block/qcow.c                                  |  1 +
 block/qcow2.c                                 |  1 +
 block/vhdx-log.c                              |  1 +
 block/vpc.c                                   |  1 +
 chardev/spice.c                               |  1 +
 hw/9pfs/9p-local.c                            |  1 +
 hw/9pfs/9p-proxy.c                            |  1 +
 hw/arm/msf2-soc.c                             |  1 +
 hw/arm/virt.c                                 |  2 +
 hw/core/loader-fit.c                          |  1 +
 hw/intc/arm_gicv3_kvm.c                       |  1 +
 hw/misc/msf2-sysreg.c                         |  1 +
 hw/pci-bridge/pcie_root_port.c                |  1 +
 hw/ppc/mac_newworld.c                         |  1 +
 hw/ppc/spapr.c                                |  1 +
 hw/ppc/spapr_pci.c                            |  1 +
 hw/rdma/vmw/pvrdma_main.c                     |  1 +
 hw/s390x/s390-ccw.c                           |  1 +
 hw/scsi/scsi-disk.c                           |  1 +
 hw/scsi/scsi-generic.c                        |  1 +
 hw/usb/ccid-card-emulated.c                   |  1 +
 hw/vfio/common.c                              |  2 +
 hw/vfio/pci.c                                 |  2 +
 hw/virtio/virtio-pci.c                        |  2 +
 migration/migration.c                         |  1 +
 monitor/hmp-cmds.c                            |  8 +--
 nbd/client.c                                  |  1 +
 nbd/server.c                                  |  1 +
 net/net.c                                     | 17 ++---
 qdev-monitor.c                                |  2 +
 target/ppc/kvm.c                              |  2 +
 ui/vnc.c                                      | 10 +--
 util/error.c                                  |  8 +--
 util/qemu-option.c                            |  2 +
 util/qemu-sockets.c                           |  2 +
 python/commit-per-subsystem.py                | 69 +++++++++++++++++++
 .../fix-error_append_hint-usage.cocci         | 25 +++++++
 44 files changed, 198 insertions(+), 26 deletions(-)
 create mode 100755 python/commit-per-subsystem.py
 create mode 100644 scripts/coccinelle/fix-error_append_hint-usage.cocci

CC: John Snow <jsnow@redhat.com>
CC: Kevin Wolf <kwolf@redhat.com>
CC: Max Reitz <mreitz@redhat.com>
CC: Fam Zheng <fam@euphon.net>
CC: Jeff Cody <codyprime@gmail.com>
CC: "Marc-André Lureau" <marcandre.lureau@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Greg Kurz <groug@kaod.org>
CC: Subbaraya Sundeep <sundeep.lkml@gmail.com>
CC: Peter Maydell <peter.maydell@linaro.org>
CC: Paul Burton <pburton@wavecomp.com>
CC: Aleksandar Rikalo <arikalo@wavecomp.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
CC: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
CC: David Gibson <david@gibson.dropbear.id.au>
CC: Yuval Shaia <yuval.shaia@oracle.com>
CC: Cornelia Huck <cohuck@redhat.com>
CC: Eric Farman <farman@linux.ibm.com>
CC: Richard Henderson <rth@twiddle.net>
CC: David Hildenbrand <david@redhat.com>
CC: Halil Pasic <pasic@linux.ibm.com>
CC: Christian Borntraeger <borntraeger@de.ibm.com>
CC: Gerd Hoffmann <kraxel@redhat.com>
CC: Alex Williamson <alex.williamson@redhat.com>
CC: Markus Armbruster <armbru@redhat.com>
CC: Michael Roth <mdroth@linux.vnet.ibm.com>
CC: Juan Quintela <quintela@redhat.com>
CC: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
CC: Eric Blake <eblake@redhat.com>
CC: Jason Wang <jasowang@redhat.com>
CC: "Daniel P. Berrangé" <berrange@redhat.com>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: qemu-block@nongnu.org
CC: qemu-devel@nongnu.org
CC: integration@gluster.org
CC: qemu-arm@nongnu.org
CC: qemu-ppc@nongnu.org
CC: qemu-s390x@nongnu.org

-- 
2.21.0


Re: [PATCH v3 00/25] error: auto propagated local_err
Posted by no-reply@patchew.org 4 years, 7 months ago
Patchew URL: https://patchew.org/QEMU/20190924200902.4703-1-vsementsov@virtuozzo.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20190924200902.4703-1-vsementsov@virtuozzo.com
Subject: [PATCH v3 00/25] error: auto propagated local_err

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Switched to a new branch 'test'
2821824 PVRDMA: Fix error_append_hint usage
4fed9bd nbd: Fix error_append_hint usage
4dd593b Sockets: Fix error_append_hint usage
4b51e60 Migration: Fix error_append_hint usage
8badd1e QOM: Fix error_append_hint usage
cee12d7 cmdline: Fix error_append_hint usage
9ee000d chardev: Fix error_append_hint usage
9b82769 block: Fix error_append_hint usage
2680a9c virtio-9p: Fix error_append_hint usage
9563cc0 virtio: Fix error_append_hint usage
eaf3c5f VFIO: Fix error_append_hint usage
5a70d12 USB: Fix error_append_hint usage
a7307a2 SCSI: Fix error_append_hint usage
38ab236 PCI: Fix error_append_hint usage
1e3f98e SmartFusion2: Fix error_append_hint usage
4b06bcc arm: Fix error_append_hint usage
1e194b4 PowerPC TCG CPUs: Fix error_append_hint usage
16f7be8 ARM TCG CPUs: Fix error_append_hint usage
38baa0a s390: Fix error_append_hint usage
e596c72 python: add commit-per-subsystem.py
c82b758 scripts: add coccinelle script to fix error_append_hint usage
4c37d5c error: auto propagated local_err
1f5d983 net/net: fix local variable shadowing in net_client_init
118f617 hw/core/loader-fit: fix freeing errp in fit_load_fdt
2493069 errp: rename errp to errp_in where it is IN-argument

=== OUTPUT BEGIN ===
1/25 Checking commit 2493069b7603 (errp: rename errp to errp_in where it is IN-argument)
2/25 Checking commit 118f61787279 (hw/core/loader-fit: fix freeing errp in fit_load_fdt)
3/25 Checking commit 1f5d98328d6c (net/net: fix local variable shadowing in net_client_init)
4/25 Checking commit 4c37d5c6d228 (error: auto propagated local_err)
ERROR: Macros with multiple statements should be enclosed in a do - while loop
#69: FILE: include/qapi/error.h:355:
+#define ERRP_FUNCTION_BEGIN() \
+g_auto(ErrorPropagator) __auto_errp_prop = {.errp = errp}; \
+errp = ((errp == NULL || *errp == error_fatal) ? \
+    &__auto_errp_prop.local_err : errp)

total: 1 errors, 0 warnings, 41 lines checked

Patch 4/25 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

5/25 Checking commit c82b758af1da (scripts: add coccinelle script to fix error_append_hint usage)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#15: 
new file mode 100644

total: 0 errors, 1 warnings, 25 lines checked

Patch 5/25 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
6/25 Checking commit e596c720393c (python: add commit-per-subsystem.py)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#13: 
new file mode 100755

total: 0 errors, 1 warnings, 69 lines checked

Patch 6/25 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
7/25 Checking commit 38baa0a318a0 (s390: Fix error_append_hint usage)
8/25 Checking commit 16f7be86eeb1 (ARM TCG CPUs: Fix error_append_hint usage)
9/25 Checking commit 1e194b48e97b (PowerPC TCG CPUs: Fix error_append_hint usage)
10/25 Checking commit 4b06bccfe947 (arm: Fix error_append_hint usage)
11/25 Checking commit 1e3f98eb12d0 (SmartFusion2: Fix error_append_hint usage)
12/25 Checking commit 38ab2364f44b (PCI: Fix error_append_hint usage)
13/25 Checking commit a7307a29159e (SCSI: Fix error_append_hint usage)
14/25 Checking commit 5a70d127c9fc (USB: Fix error_append_hint usage)
15/25 Checking commit eaf3c5f855c8 (VFIO: Fix error_append_hint usage)
16/25 Checking commit 9563cc0b6e37 (virtio: Fix error_append_hint usage)
17/25 Checking commit 2680a9ca88fa (virtio-9p: Fix error_append_hint usage)
18/25 Checking commit 9b8276961550 (block: Fix error_append_hint usage)
19/25 Checking commit 9ee000da2508 (chardev: Fix error_append_hint usage)
20/25 Checking commit cee12d7c8697 (cmdline: Fix error_append_hint usage)
21/25 Checking commit 8badd1ec04da (QOM: Fix error_append_hint usage)
22/25 Checking commit 4b51e60a1e83 (Migration: Fix error_append_hint usage)
23/25 Checking commit 4dd593b9c7df (Sockets: Fix error_append_hint usage)
24/25 Checking commit 4fed9bd83a77 (nbd: Fix error_append_hint usage)
25/25 Checking commit 2821824d98bf (PVRDMA: Fix error_append_hint usage)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20190924200902.4703-1-vsementsov@virtuozzo.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Re: [PATCH v3 00/25] error: auto propagated local_err
Posted by Vladimir Sementsov-Ogievskiy 4 years, 7 months ago
25.09.2019 13:09, no-reply@patchew.org wrote:
> Patchew URL: https://patchew.org/QEMU/20190924200902.4703-1-vsementsov@virtuozzo.com/
> 
> 
> 
> Hi,
> 
> This series seems to have some coding style problems. See output below for
> more information:
> 

[..]

> 
> === OUTPUT BEGIN ===
> 1/25 Checking commit 2493069b7603 (errp: rename errp to errp_in where it is IN-argument)
> 2/25 Checking commit 118f61787279 (hw/core/loader-fit: fix freeing errp in fit_load_fdt)
> 3/25 Checking commit 1f5d98328d6c (net/net: fix local variable shadowing in net_client_init)
> 4/25 Checking commit 4c37d5c6d228 (error: auto propagated local_err)
> ERROR: Macros with multiple statements should be enclosed in a do - while loop

In general - yes. But this is a very special case and it worth an exception of the rule.

> #69: FILE: include/qapi/error.h:355:
> +#define ERRP_FUNCTION_BEGIN() \
> +g_auto(ErrorPropagator) __auto_errp_prop = {.errp = errp}; \
> +errp = ((errp == NULL || *errp == error_fatal) ? \
> +    &__auto_errp_prop.local_err : errp)
> 
> total: 1 errors, 0 warnings, 41 lines checked



-- 
Best regards,
Vladimir