All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kurz <groug@kaod.org>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH v4 21/31] virtio-9p: Fix error_append_hint/error_prepend usage
Date: Wed, 2 Oct 2019 11:19:12 +0200	[thread overview]
Message-ID: <20191002111912.647a4470@bahia.lan> (raw)
In-Reply-To: <20191001155319.8066-22-vsementsov@virtuozzo.com>

On Tue,  1 Oct 2019 18:53:09 +0300
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> wrote:

> If we want to add some info to errp (by error_prepend() or
> error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro.
> Otherwise, this info will not be added when errp == &fatal_err
> (the program will exit prior to the error_append_hint() or
> error_prepend() call).  Fix such cases.
> 

Well... this patch doesn't really fix anything because...

> This commit (together with its neighbors) was generated by
> 
> git grep -l 'error_\(append_hint\|prepend\)(errp' | while read f; do \
> spatch --sp-file scripts/coccinelle/fix-error-add-info.cocci \
> --in-place $f; done
> 
> and then
> 
> ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)"
> 
> (auto-msg was a file with this commit message)
> 
> and then by hand, for not maintained changed files:
> 
> git commit -m "<SUB-SYSTEM>: $(< auto-msg)" <FILES>
> 
> Still, for backporting it may be more comfortable to use only the first
> command and then do one huge commit.
> 
> Reported-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>  hw/9pfs/9p-local.c | 1 +
>  hw/9pfs/9p-proxy.c | 1 +
>  hw/9pfs/9p.c       | 1 +
>  3 files changed, 3 insertions(+)
> 
> diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
> index 08e673a79c..fccbf758bd 100644
> --- a/hw/9pfs/9p-local.c
> +++ b/hw/9pfs/9p-local.c
> @@ -1471,6 +1471,7 @@ static void local_cleanup(FsContext *ctx)
>  
>  static void error_append_security_model_hint(Error **errp)
>  {
> +    ERRP_AUTO_PROPAGATE();
>      error_append_hint(errp, "Valid options are: security_model="
>                        "[passthrough|mapped-xattr|mapped-file|none]\n");
>  }

This function doesn't need auto propagation in the first place. It is
simply a wrapper around error_append_hint(). ERRP_AUTO_PROPAGATE()
should go to the caller local_parse_opts().

Also some extra care is needed there to handle part [3.] of the
cleanup. I understand this is out of the scope of that series,
but I'd rather see all of this fixed in the same patch.

> diff --git a/hw/9pfs/9p-proxy.c b/hw/9pfs/9p-proxy.c
> index 57a8c1c808..9291c8efa2 100644
> --- a/hw/9pfs/9p-proxy.c
> +++ b/hw/9pfs/9p-proxy.c
> @@ -1116,6 +1116,7 @@ static int connect_namedsocket(const char *path, Error **errp)
>  
>  static void error_append_socket_sockfd_hint(Error **errp)
>  {
> +    ERRP_AUTO_PROPAGATE();
>      error_append_hint(errp, "Either specify socket=/some/path where /some/path"
>                        " points to a listening AF_UNIX socket or sock_fd=fd"
>                        " where fd is a file descriptor to a connected AF_UNIX"

Same here. ERRP_AUTO_PROPAGATE() should go to proxy_parse_opts().

> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index cce2366219..1df2749e03 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -3552,6 +3552,7 @@ void pdu_submit(V9fsPDU *pdu, P9MsgHeader *hdr)
>  int v9fs_device_realize_common(V9fsState *s, const V9fsTransport *t,
>                                 Error **errp)
>  {
> +    ERRP_AUTO_PROPAGATE();

This is correct since this function calls error_prepend() but I think
errp is never &error_fatal or &error_abort on the realize path. Anyway,
better safe than sorry.

>      int i, len;
>      struct stat stat;
>      FsDriverEntry *fse;

Please drop this patch from your series and I'll do the change once
ERRP_AUTO_PROPAGATE() gets merged.

Great thanks for your time in finding a clever way to deal with error
propagation. :)

Cheers,

--
Greg


  reply	other threads:[~2019-10-02  9:20 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-01 15:52 [PATCH v4 00/31] error: auto propagated local_err Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 01/31] errp: rename errp to errp_in where it is IN-argument Vladimir Sementsov-Ogievskiy
2019-10-08  9:08   ` Markus Armbruster
2019-10-08  9:30     ` Vladimir Sementsov-Ogievskiy
2019-10-08 12:05       ` Markus Armbruster
2019-10-09 10:08         ` Vladimir Sementsov-Ogievskiy
2019-10-09 18:48           ` Markus Armbruster
2019-10-09  9:42     ` Vladimir Sementsov-Ogievskiy
2019-10-09 18:51       ` Markus Armbruster
2019-10-01 15:52 ` [PATCH v4 02/31] hw/core/loader-fit: fix freeing errp in fit_load_fdt Vladimir Sementsov-Ogievskiy
2019-10-01 16:13   ` Eric Blake
2019-10-08 14:24   ` Markus Armbruster
2019-10-01 15:52 ` [PATCH v4 03/31] net/net: fix local variable shadowing in net_client_init Vladimir Sementsov-Ogievskiy
2019-10-08 14:34   ` Markus Armbruster
2019-10-01 15:52 ` [PATCH v4 04/31] error: auto propagated local_err Vladimir Sementsov-Ogievskiy
2019-10-01 16:17   ` Eric Blake
2019-10-01 16:17     ` Eric Blake
2019-10-02 10:15   ` Roman Kagan
2019-10-02 14:00     ` Eric Blake
2019-10-08 16:03   ` Markus Armbruster
2019-10-08 16:19     ` Greg Kurz
2019-10-08 18:24       ` Markus Armbruster
2019-10-09  8:04   ` Markus Armbruster
2019-10-09  8:17     ` Vladimir Sementsov-Ogievskiy
2019-10-09 19:09       ` Markus Armbruster
2019-10-01 15:52 ` [PATCH v4 05/31] scripts: add script to fix error_append_hint/error_prepend usage Vladimir Sementsov-Ogievskiy
2019-10-01 16:22   ` Eric Blake
2019-10-01 17:01     ` Vladimir Sementsov-Ogievskiy
2019-10-01 17:01       ` Vladimir Sementsov-Ogievskiy
2019-10-01 16:50   ` Eric Blake
2019-10-01 17:08     ` Eric Blake
2019-10-01 17:08       ` Eric Blake
2019-10-01 17:15     ` Vladimir Sementsov-Ogievskiy
2019-10-01 17:15       ` Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 06/31] python: add commit-per-subsystem.py Vladimir Sementsov-Ogievskiy
2019-10-07 15:55   ` Cornelia Huck
2019-10-07 16:10     ` Vladimir Sementsov-Ogievskiy
2019-10-07 16:16       ` Cornelia Huck
2019-10-07 16:16         ` Cornelia Huck
2019-10-07 16:21         ` Daniel P. Berrangé
2019-10-07 16:21           ` Daniel P. Berrangé
2019-10-07 17:15           ` Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 07/31] s390: Fix error_append_hint/error_prepend usage Vladimir Sementsov-Ogievskiy
2019-10-07 15:58   ` Cornelia Huck
2019-10-09  7:42   ` Markus Armbruster
2019-10-11 15:33     ` Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 08/31] ARM TCG CPUs: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 09/31] PowerPC " Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 10/31] arm: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:52 ` [PATCH v4 11/31] SmartFusion2: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 12/31] ASPEED BMCs: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 13/31] Boston: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 14/31] PowerNV (Non-Virtualized): " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 15/31] PCI: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 16/31] SCSI: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 17/31] USB: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 18/31] VFIO: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 19/31] vhost: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 20/31] virtio: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 21/31] virtio-9p: " Vladimir Sementsov-Ogievskiy
2019-10-02  9:19   ` Greg Kurz [this message]
2019-10-02 12:58     ` Vladimir Sementsov-Ogievskiy
2019-10-02 13:11       ` Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 22/31] XIVE: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 23/31] block: " Vladimir Sementsov-Ogievskiy
2019-10-01 17:09   ` Eric Blake
2019-10-01 18:55     ` Vladimir Sementsov-Ogievskiy
2019-10-01 19:12       ` Vladimir Sementsov-Ogievskiy
2019-10-01 19:44       ` Eric Blake
2019-10-09  7:22   ` Markus Armbruster
2019-10-01 15:53 ` [PATCH v4 24/31] chardev: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 25/31] cmdline: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 26/31] QOM: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 27/31] Migration: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 28/31] Sockets: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 29/31] nbd: " Vladimir Sementsov-Ogievskiy
2019-10-01 17:47   ` Eric Blake
2019-10-01 15:53 ` [PATCH v4 30/31] PVRDMA: " Vladimir Sementsov-Ogievskiy
2019-10-01 15:53 ` [PATCH v4 31/31] ivshmem: " Vladimir Sementsov-Ogievskiy
2019-10-02  3:26 ` [PATCH v4 00/31] error: auto propagated local_err no-reply
2019-10-02 11:58 ` Markus Armbruster
2019-10-08  7:30 ` Markus Armbruster
2019-10-08  8:41   ` Vladimir Sementsov-Ogievskiy
2019-10-08  9:39     ` Greg Kurz
2019-10-08 10:09       ` Vladimir Sementsov-Ogievskiy
2019-10-08 11:59         ` Markus Armbruster
2019-10-09  8:45         ` Vladimir Sementsov-Ogievskiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191002111912.647a4470@bahia.lan \
    --to=groug@kaod.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.