[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v2 13/23] qcow2: handle_copied(): Implement
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [RFC PATCH v2 13/23] qcow2: handle_copied(): Implement non-zero host_offset |
Date: |
Thu, 14 Feb 2013 10:40:19 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0 |
Am 13.02.2013 22:17, schrieb Blue Swirl:
> On Wed, Feb 13, 2013 at 1:22 PM, Kevin Wolf <address@hidden> wrote:
>> Look only for clusters that start at a given physical offset.
>>
>> Signed-off-by: Kevin Wolf <address@hidden>
>> ---
>> block/qcow2-cluster.c | 26 ++++++++++++++++++--------
>> 1 files changed, 18 insertions(+), 8 deletions(-)
>>
>> diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
>> index 5ce2c88..90fe36c 100644
>> --- a/block/qcow2-cluster.c
>> +++ b/block/qcow2-cluster.c
>> @@ -827,8 +827,6 @@ static int handle_dependencies(BlockDriverState *bs,
>> uint64_t guest_offset,
>> * the length of the area that can be written to.
>> *
>> * -errno: in error cases
>> - *
>> - * TODO Make non-zero host_offset behave like describe above
>> */
>> static int handle_copied(BlockDriverState *bs, uint64_t guest_offset,
>> uint64_t *host_offset, uint64_t *bytes, QCowL2Meta **m)
>> @@ -843,7 +841,6 @@ static int handle_copied(BlockDriverState *bs, uint64_t
>> guest_offset,
>>
>> trace_qcow2_handle_copied(qemu_coroutine_self(), guest_offset,
>> *host_offset,
>> *bytes);
>> - assert(*host_offset == 0);
>>
>> /*
>> * Calculate the number of clusters to look for. We stop at L2 table
>> @@ -867,6 +864,15 @@ static int handle_copied(BlockDriverState *bs, uint64_t
>> guest_offset,
>> if (qcow2_get_cluster_type(cluster_offset) == QCOW2_CLUSTER_NORMAL
>> && (cluster_offset & QCOW_OFLAG_COPIED))
>> {
>> + /* If a specific host_offset is required, check it */
>> + if (*host_offset != 0
>> + && (cluster_offset & L2E_OFFSET_MASK) != *host_offset)
>> + {
>
> Braces should cuddle with the previous line.
Can we get rid of this rule for multiline ifs? Having the
second/third/... line of the condition and the first line of the then
branch with no clear separation severely hurts readability in my opinion.
>
>> + *bytes = 0;
>> + ret = 0;
>> + goto out;
>> + }
>> +
>> /* We keep all QCOW_OFLAG_COPIED clusters */
>> keep_clusters =
>> count_contiguous_clusters(nb_clusters, s->cluster_size,
Kevin
- Re: [Qemu-devel] [RFC PATCH v2 09/23] qcow2: Clean up handle_alloc(), (continued)
- [Qemu-devel] [RFC PATCH v2 08/23] qcow2: Finalise interface of handle_alloc(), Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 07/23] qcow2: handle_alloc(): Get rid of keep_clusters parameter, Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 12/23] qcow2: handle_copied(): Get rid of keep_clusters parameter, Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 11/23] qcow2: handle_copied(): Get rid of nb_clusters parameter, Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 06/23] qcow2: handle_alloc(): Get rid of nb_clusters parameter, Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 15/23] qcow2: Allow requests with multiple l2metas, Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 10/23] qcow2: Factor out handle_copied(), Kevin Wolf, 2013/02/13
- [Qemu-devel] [RFC PATCH v2 13/23] qcow2: handle_copied(): Implement non-zero host_offset, Kevin Wolf, 2013/02/13
[Qemu-devel] [RFC PATCH v2 16/23] qcow2: Reading from areas not in L2 tables yet, Kevin Wolf, 2013/02/13
[Qemu-devel] [RFC PATCH v2 18/23] qcow2: Delay the COW, Kevin Wolf, 2013/02/13
[Qemu-devel] [RFC PATCH v2 19/23] qcow2: Add error handling to the l2meta coroutine, Kevin Wolf, 2013/02/13