From: Eric Blake <eblake@redhat.com> To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>, qemu-devel@nongnu.org Cc: "Kevin Wolf" <kwolf@redhat.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "Michael Roth" <mdroth@linux.vnet.ibm.com>, qemu-block@nongnu.org, "Paul Durrant" <paul@xen.org>, "Laszlo Ersek" <lersek@redhat.com>, "Cornelia Huck" <cohuck@redhat.com>, "Greg Kurz" <groug@kaod.org>, "Max Reitz" <mreitz@redhat.com>, "Gerd Hoffmann" <kraxel@redhat.com>, "Stefan Hajnoczi" <stefanha@redhat.com>, "Anthony Perard" <anthony.perard@citrix.com>, xen-devel@lists.xenproject.org, "Philippe Mathieu-Daudé" <philmd@redhat.com>, "Markus Armbruster" <armbru@redhat.com>, "Stefan Berger" <stefanb@linux.ibm.com> Subject: Re: [PATCH v6 03/11] scripts: add coccinelle script to use auto propagated errp Date: Fri, 17 Jan 2020 08:24:55 -0600 [thread overview] Message-ID: <4e41cb43-4efb-9cc9-c685-d25e4ddf8fbb@redhat.com> (raw) In-Reply-To: <20200110194158.14190-4-vsementsov@virtuozzo.com> On 1/10/20 1:41 PM, Vladimir Sementsov-Ogievskiy wrote: > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- Rather light on the commit message. If nothing else, a comment about typical command-line usage would be helpful (yes, it's in the patch body, but sometimes I just refer to git log). > diff --git a/include/qapi/error.h b/include/qapi/error.h > index 532b9afb9e..dcfb77e107 100644 > --- a/include/qapi/error.h > +++ b/include/qapi/error.h > @@ -141,6 +141,9 @@ > * ... > * } > * > + * For mass conversion use script > + * scripts/coccinelle/auto-propagated-errp.cocci > + * > * > * Receive and accumulate multiple errors (first one wins): > * Error *err = NULL, *local_err = NULL; > diff --git a/scripts/coccinelle/auto-propagated-errp.cocci b/scripts/coccinelle/auto-propagated-errp.cocci > new file mode 100644 > index 0000000000..6c72a5049f > --- /dev/null > +++ b/scripts/coccinelle/auto-propagated-errp.cocci > @@ -0,0 +1,139 @@ > +// Use ERRP_AUTO_PROPAGATE (see include/qapi/error.h) > +// > +// Usage example: > +// spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ > +// --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff \ > +// blockdev-nbd.c qemu-nbd.c {block/nbd*,nbd/*,include/block/nbd*}.[hc] > + > +@@ > +// Add invocation to errp-functions where necessary > +// We should skip functions with "Error *const *errp" > +// parameter, but how to do it with coccinelle? > +// I don't know, so, I skip them by function name regex. > +// It's safe: if we not skip some functions with s/not/did not/ > +// "Error *const *errp", ERRP_AUTO_PROPAGATE invocation > +// will fail to compile, because of const violation. > +identifier fn !~ "error_append_.*_hint"; > +identifier local_err, errp; > +@@ > + > + fn(..., Error **errp, ...) > + { > ++ ERRP_AUTO_PROPAGATE(); > + <+... > + when != ERRP_AUTO_PROPAGATE(); > +( > + error_append_hint(errp, ...); > +| > + error_prepend(errp, ...); > +| > + Error *local_err = NULL; > +) > + ...+> > + } > + Looks like it should catch all functions that require adding the macro. > +@rule1@ > +// We do not inherit from previous rule, as we want to match > +// also functions, which already had ERRP_AUTO_PROPAGATE > +// invocation. Grammar suggestion: // We want to patch error propagation in functions regardless of // whether the function already uses ERRP_AUTO_PROPAGATE, hence // this one does not inherit from the first rule. Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
WARNING: multiple messages have this Message-ID (diff)
From: Eric Blake <eblake@redhat.com> To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>, qemu-devel@nongnu.org Cc: "Kevin Wolf" <kwolf@redhat.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "Michael Roth" <mdroth@linux.vnet.ibm.com>, qemu-block@nongnu.org, "Paul Durrant" <paul@xen.org>, "Laszlo Ersek" <lersek@redhat.com>, "Cornelia Huck" <cohuck@redhat.com>, "Greg Kurz" <groug@kaod.org>, "Max Reitz" <mreitz@redhat.com>, "Gerd Hoffmann" <kraxel@redhat.com>, "Stefan Hajnoczi" <stefanha@redhat.com>, "Anthony Perard" <anthony.perard@citrix.com>, xen-devel@lists.xenproject.org, "Philippe Mathieu-Daudé" <philmd@redhat.com>, "Markus Armbruster" <armbru@redhat.com>, "Stefan Berger" <stefanb@linux.ibm.com> Subject: Re: [Xen-devel] [PATCH v6 03/11] scripts: add coccinelle script to use auto propagated errp Date: Fri, 17 Jan 2020 08:24:55 -0600 [thread overview] Message-ID: <4e41cb43-4efb-9cc9-c685-d25e4ddf8fbb@redhat.com> (raw) In-Reply-To: <20200110194158.14190-4-vsementsov@virtuozzo.com> On 1/10/20 1:41 PM, Vladimir Sementsov-Ogievskiy wrote: > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- Rather light on the commit message. If nothing else, a comment about typical command-line usage would be helpful (yes, it's in the patch body, but sometimes I just refer to git log). > diff --git a/include/qapi/error.h b/include/qapi/error.h > index 532b9afb9e..dcfb77e107 100644 > --- a/include/qapi/error.h > +++ b/include/qapi/error.h > @@ -141,6 +141,9 @@ > * ... > * } > * > + * For mass conversion use script > + * scripts/coccinelle/auto-propagated-errp.cocci > + * > * > * Receive and accumulate multiple errors (first one wins): > * Error *err = NULL, *local_err = NULL; > diff --git a/scripts/coccinelle/auto-propagated-errp.cocci b/scripts/coccinelle/auto-propagated-errp.cocci > new file mode 100644 > index 0000000000..6c72a5049f > --- /dev/null > +++ b/scripts/coccinelle/auto-propagated-errp.cocci > @@ -0,0 +1,139 @@ > +// Use ERRP_AUTO_PROPAGATE (see include/qapi/error.h) > +// > +// Usage example: > +// spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ > +// --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff \ > +// blockdev-nbd.c qemu-nbd.c {block/nbd*,nbd/*,include/block/nbd*}.[hc] > + > +@@ > +// Add invocation to errp-functions where necessary > +// We should skip functions with "Error *const *errp" > +// parameter, but how to do it with coccinelle? > +// I don't know, so, I skip them by function name regex. > +// It's safe: if we not skip some functions with s/not/did not/ > +// "Error *const *errp", ERRP_AUTO_PROPAGATE invocation > +// will fail to compile, because of const violation. > +identifier fn !~ "error_append_.*_hint"; > +identifier local_err, errp; > +@@ > + > + fn(..., Error **errp, ...) > + { > ++ ERRP_AUTO_PROPAGATE(); > + <+... > + when != ERRP_AUTO_PROPAGATE(); > +( > + error_append_hint(errp, ...); > +| > + error_prepend(errp, ...); > +| > + Error *local_err = NULL; > +) > + ...+> > + } > + Looks like it should catch all functions that require adding the macro. > +@rule1@ > +// We do not inherit from previous rule, as we want to match > +// also functions, which already had ERRP_AUTO_PROPAGATE > +// invocation. Grammar suggestion: // We want to patch error propagation in functions regardless of // whether the function already uses ERRP_AUTO_PROPAGATE, hence // this one does not inherit from the first rule. Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2020-01-17 14:26 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-10 19:41 [PATCH v6 00/11] error: auto propagated local_err part I Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 01/11] qapi/error: add (Error **errp) cleaning APIs Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-15 7:46 ` Greg Kurz 2020-01-15 7:46 ` [Xen-devel] " Greg Kurz 2020-01-17 13:15 ` Eric Blake 2020-01-17 13:15 ` [Xen-devel] " Eric Blake 2020-01-10 19:41 ` [PATCH v6 02/11] error: auto propagated local_err Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-13 8:50 ` Paul Durrant 2020-01-13 8:50 ` [Xen-devel] " Paul Durrant 2020-01-13 9:25 ` Vladimir Sementsov-Ogievskiy 2020-01-13 9:25 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-15 18:33 ` Greg Kurz 2020-01-15 18:33 ` [Xen-devel] " Greg Kurz 2020-01-17 14:18 ` Eric Blake 2020-01-17 14:18 ` [Xen-devel] " Eric Blake 2020-01-10 19:41 ` [PATCH v6 03/11] scripts: add coccinelle script to use auto propagated errp Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-17 14:24 ` Eric Blake [this message] 2020-01-17 14:24 ` Eric Blake 2020-01-17 14:50 ` Vladimir Sementsov-Ogievskiy 2020-01-17 14:50 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 04/11] hw/sd/ssi-sd: fix error handling in ssi_sd_realize Vladimir Sementsov-Ogievskiy 2020-01-17 14:26 ` Eric Blake 2020-01-10 19:41 ` [PATCH v6 05/11] SD (Secure Card): introduce ERRP_AUTO_PROPAGATE Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 06/11] pflash: " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 07/11] fw_cfg: " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 08/11] virtio-9p: " Vladimir Sementsov-Ogievskiy 2020-01-13 10:40 ` Greg Kurz 2020-01-10 19:41 ` [PATCH v6 09/11] TPM: " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 10/11] nbd: " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [PATCH v6 11/11] xen: " Vladimir Sementsov-Ogievskiy 2020-01-10 19:41 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-13 8:57 ` Paul Durrant 2020-01-13 8:57 ` [Xen-devel] " Paul Durrant 2020-01-13 9:25 ` Vladimir Sementsov-Ogievskiy 2020-01-13 9:25 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-10 20:22 ` [Xen-devel] [PATCH v6 00/11] error: auto propagated local_err part I no-reply 2020-01-10 20:22 ` no-reply 2020-01-30 12:36 ` Vladimir Sementsov-Ogievskiy 2020-01-30 12:36 ` [Xen-devel] " Vladimir Sementsov-Ogievskiy 2020-01-30 16:50 ` Markus Armbruster 2020-01-30 16:50 ` [Xen-devel] " Markus Armbruster
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=4e41cb43-4efb-9cc9-c685-d25e4ddf8fbb@redhat.com \ --to=eblake@redhat.com \ --cc=anthony.perard@citrix.com \ --cc=armbru@redhat.com \ --cc=cohuck@redhat.com \ --cc=groug@kaod.org \ --cc=kraxel@redhat.com \ --cc=kwolf@redhat.com \ --cc=lersek@redhat.com \ --cc=mdroth@linux.vnet.ibm.com \ --cc=mreitz@redhat.com \ --cc=paul@xen.org \ --cc=philmd@redhat.com \ --cc=qemu-block@nongnu.org \ --cc=qemu-devel@nongnu.org \ --cc=sstabellini@kernel.org \ --cc=stefanb@linux.ibm.com \ --cc=stefanha@redhat.com \ --cc=vsementsov@virtuozzo.com \ --cc=xen-devel@lists.xenproject.org \ /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: linkBe 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.