From: Max Reitz <mreitz@redhat.com>
To: "Benoît Canet" <benoit.canet@nodalink.com>,
"Eric Blake" <eblake@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 2/9] qcow2: Factor out refcount accounting for check
Date: Fri, 22 Aug 2014 17:26:45 +0200 [thread overview]
Message-ID: <53F76135.4010703@redhat.com> (raw)
In-Reply-To: <20140821211607.GC15636@nodalink.com>
On 21.08.2014 23:16, Benoît Canet wrote:
> On Thu, Aug 21, 2014 at 01:13:20PM -0600, Eric Blake wrote:
>> On 08/21/2014 12:57 PM, Benoît Canet wrote:
>>> On Fri, Aug 15, 2014 at 05:16:19PM +0200, Max Reitz wrote:
>>>> Put the code for calculating the reference counts during qemu-img check
>>>> into an own function.
>>>>
>>>> Also, do not use g_realloc() for increasing the size of the in-memory
>>>> refcount table, but rather g_try_realloc().
>> The "Also," may be a sign of doing two things in one patch that could
>> have been two.
The second change fit really well into this patch, so I left it in. On
the other hand, I just noticed I don't need to do that at all, because
that call will be dropped in patch 5 anyway.
>>>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>>>> ---
>>>> block/qcow2-refcount.c | 188 ++++++++++++++++++++++++++++++-------------------
>>>> 1 file changed, 115 insertions(+), 73 deletions(-)
>> But overall, this patch seems like a reasonable refactor to me,
>> splitting out a reusable piece.
>>
>>> Another point is that I think these two extractions patches will totaly confuse
>>> git blame the day we will need it.
>> I disagree. When refactoring to split a large function into multiple
>> smaller functions, where the original function calls out to a helper
>> function for what it used to do inline, git blame tracks things
>> perfectly. Someone following blame may end up on this commit as the
>> source of a given line in its new location, but the blame viewer will
>> also show this commit is a refactor, and it should be fairly easy to
>> find where the line was moved from, and resume blaming even further.
> I think we could separate the extractions and the respectives moves into their own
> patches.
> This way the extraction patch would be cleaner (no code disapearing and appearing
> elsewere with another author) and the operations could be reviewed more easily
> with the various code review tools.
The main cause for the diff cluttering is making nb_clusters and
refcount_table pointers in the function. Unfortunately (or maybe
fortunately?) this is not C++, so I cannot make them references, but
they need to be passed by reference. The function absolutely must be
able to change their values and I don't see any way of avoiding this
even in the first extraction patch.
I'll do my best on the rest, but the diff not being trivial is mainly
simply due to the movement not being absolutely trivial; all accesses to
nb_clusters and refcount_table have to be modified.
Max
next prev parent reply other threads:[~2014-08-22 15:27 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-15 15:16 [Qemu-devel] [PATCH v2 0/9] qcow2: Fix image repairing Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 1/9] qcow2: Fix leaks in dirty images Max Reitz
2014-08-22 16:09 ` Eric Blake
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 2/9] qcow2: Factor out refcount accounting for check Max Reitz
2014-08-21 18:47 ` Benoît Canet
2014-08-21 18:57 ` Benoît Canet
2014-08-21 19:13 ` Eric Blake
2014-08-21 21:16 ` Benoît Canet
2014-08-22 15:26 ` Max Reitz [this message]
2014-08-22 15:37 ` Benoît Canet
2014-08-22 15:44 ` Max Reitz
2014-08-22 15:46 ` Max Reitz
2014-08-22 15:48 ` Eric Blake
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 3/9] qcow2: Factor out refcount comparison " Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 4/9] qcow2: Fix refcount blocks beyond image end Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 5/9] qcow2: Do not perform potentially damaging repairs Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 6/9] qcow2: Rebuild refcount structure during check Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 7/9] qcow2: Clean up after refcount rebuild Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 8/9] iotests: Fix test outputs Max Reitz
2014-08-15 15:16 ` [Qemu-devel] [PATCH v2 9/9] iotests: Add test for potentially damaging repairs Max Reitz
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=53F76135.4010703@redhat.com \
--to=mreitz@redhat.com \
--cc=benoit.canet@nodalink.com \
--cc=eblake@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).