[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v8 00/10] error: auto propagated local_err part I



Vladimir Sementsov-Ogievskiy <vsementsov@xxxxxxxxxxxxx> writes:

> File with errp-cleaning APIs dropped for two reasons:
>
> 1. I'm tired after a 3-days war with coccinelle, and don't want to add more
>    patches here.

Oww.  In my experience, Coccinelle is both awesome and terrible.  I hope
you didn't do all that work just to address minor complaints from me.  I
*try* to make it clear where on the spectrum from "I want you to improve
this" to "perhaps you'd like to try this idea" my review comments are,
but I'm certainly not perfect there.  Anyway, here we are, so let's look
at the patches.

> 2. Markus noted, that we forget two more functions which needs such wrappers
>    and corresponding conversion, so seems better to handle all these things
>    in same manner for now.
>
> changes in v8:
>
> 01: - update comments
>     - fix bug in macro [Markus]
>     - use do {} while(0)
>
> 02: a lot of changes
>     - about error propagation: try to update only patterns where we propagate
>       local_error to errp. So, patches 09 and 10 changed (wow!)
>     - Now clearing functions are not defined. Still, do the conversion, so
>       that when script applied where these functions needed, compilation will
>       be broken.
>     - improve ordering of hunks, and comment everything
>
> 09,10: drop hunks, which are converted for nothing.

Quick eye-over: you no longer wrap nbd_co_receive_cmdread_reply(),
nbd_co_receive_blockstatus_reply(), and xen_bus_realize().  Clearly
better.

> v8 is available at
>  https://src.openvz.org/scm/~vsementsov/qemu.git #tag 
> up-auto-local-err-partI-v8
> v7 is available at
>  https://src.openvz.org/scm/~vsementsov/qemu.git #tag 
> up-auto-local-err-partI-v7
>  
> In these series, there is no commit-per-subsystem script, each generated
> commit is generated in separate.
>
> Still, generating commands are very similar, and looks like
>
>     sed -n '/^<Subsystem name>$/,/^$/{s/^F: //p}' MAINTAINERS | \
>     xargs git ls-files | grep '\.[hc]$' | \
>     xargs spatch \
>         --sp-file scripts/coccinelle/auto-propagated-errp.cocci \
>         --macro-file scripts/cocci-macro-file.h \
>         --in-place --no-show-diff --max-width 80
>
> Note, that in each generated commit, generation command is the only
> text, indented by 8 spaces in 'git log -1' output, so, to regenerate all
> commits (for example, after rebase, or change in coccinelle script), you
> may use the following command:
>
> git rebase -x "sh -c \"git show --pretty= --name-only | xargs git checkout 
> HEAD^ -- ; git reset; git log -1 | grep '^        ' | sh\"" HEAD~7
>
> Which will start automated interactive rebase for generated patches,
> which will stop if generated patch changed
> (you may do git commit --amend to apply updated generated changes).
>
> Note:
>   git show --pretty= --name-only   - lists files, changed in HEAD
>   git log -1 | grep '^        ' | sh   - rerun generation command of HEAD
>
>
> Check for compilation of changed .c files
> git rebase -x "sh -c \"git show --pretty= --name-only | sed -n 's/\.c$/.o/p' 
> | xargs make -j9\"" HEAD~7

Thanks for the write-up!


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.