All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
@ 2011-08-04 16:17 ` Kevin Wolf
  0 siblings, 0 replies; 7+ messages in thread
From: Kevin Wolf @ 2011-08-04 16:17 UTC (permalink / raw)
  To: anthony; +Cc: kwolf, stefanha, qemu-devel, hahn

When loading an internal snapshot whose L1 table is smaller than the current L1
table, the size of the current L1 would be shrunk to the snapshot's L1 size in
memory, but not on disk. This lead to incorrect refcount updates and eventuelly
to image corruption.

Instead of writing the new L1 size to disk, this simply retains the bigger L1
size that is currently in use and makes sure that the unused part is zeroed.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---

Philipp, I think this should fix your corruption. Please give it a try.

Anthony, this must go into 0.15. Given the short time until -rc2, do you prefer
to pick it up directly or should I send a pull request tomorrow? The patch
looks obvious, is tested with the given testcase and survives a basic
qemu-iotests run (though qemu-iotests doesn't exercise snapshots a lot)

Stefan, please review :-)

 block/qcow2-snapshot.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 74823a5..4a8868a 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -330,8 +330,9 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
         goto fail;
 
-    s->l1_size = sn->l1_size;
+    memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
     l1_size2 = s->l1_size * sizeof(uint64_t);
+
     /* copy the snapshot l1 table to the current l1 table */
     if (bdrv_pread(bs->file, sn->l1_table_offset,
                    s->l1_table, l1_size2) != l1_size2)
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH v2 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
       [not found] <Message-Id: <1312474673-2705-1-git-send-email-kwolf@redhat.com>
  2011-08-04 16:17 ` [Qemu-devel] [PATCH 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto Kevin Wolf
@ 2011-08-04 16:24 ` Kevin Wolf
  2011-08-04 17:19   ` Philipp Hahn
  2011-08-05  6:35   ` Frediano Ziglio
  1 sibling, 2 replies; 7+ messages in thread
From: Kevin Wolf @ 2011-08-04 16:24 UTC (permalink / raw)
  To: anthony; +Cc: kwolf, stefanha, qemu-devel, hahn

When loading an internal snapshot whose L1 table is smaller than the current L1
table, the size of the current L1 would be shrunk to the snapshot's L1 size in
memory, but not on disk. This lead to incorrect refcount updates and eventuelly
to image corruption.

Instead of writing the new L1 size to disk, this simply retains the bigger L1
size that is currently in use and makes sure that the unused part is zeroed.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---

And the moment you send it out, you notice that it's wrong... *sigh*

v2:
- Check for s->l1_size > sn->l1_size in order to avoid disasters...

Philipp, I think this should fix your corruption. Please give it a try.

Anthony, this must go into 0.15. Given the short time until -rc2, do you prefer
to pick it up directly or should I send a pull request tomorrow? The patch
looks obvious, is tested with the given testcase and survives a basic
qemu-iotests run (though qemu-iotests doesn't exercise snapshots a lot)

Stefan, please review :-)

 block/qcow2-snapshot.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 74823a5..6972e66 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -330,8 +330,11 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
         goto fail;
 
-    s->l1_size = sn->l1_size;
+    if (s->l1_size > sn->l1_size) {
+        memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
+    }
     l1_size2 = s->l1_size * sizeof(uint64_t);
+
     /* copy the snapshot l1 table to the current l1 table */
     if (bdrv_pread(bs->file, sn->l1_table_offset,
                    s->l1_table, l1_size2) != l1_size2)
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
  2011-08-04 16:24 ` [Qemu-devel] [PATCH v2 " Kevin Wolf
@ 2011-08-04 17:19   ` Philipp Hahn
  2011-08-05  6:35   ` Frediano Ziglio
  1 sibling, 0 replies; 7+ messages in thread
From: Philipp Hahn @ 2011-08-04 17:19 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, stefanha

[-- Attachment #1: Type: text/plain, Size: 1312 bytes --]

Hello,

On Thursday 04 August 2011 18:24:59 Kevin Wolf wrote:
> When loading an internal snapshot whose L1 table is smaller than the
> current L1 table, the size of the current L1 would be shrunk to the
> snapshot's L1 size in memory, but not on disk. This lead to incorrect
> refcount updates and eventuelly to image corruption.
>
> Instead of writing the new L1 size to disk, this simply retains the bigger
> L1 size that is currently in use and makes sure that the unused part is
> zeroed.
>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Tested-by: Philipp Hahn <hahn@univention.de>

> Philipp, I think this should fix your corruption. Please give it a try.
Yes, the patch looks conceptually right and fixes the observed problem.

> Anthony, this must go into 0.15.
That bug is also found in 0.12.4 and 0.14.1, so if there ever shoudl be an 
update to those branches, that fix should be applied there as well.

Thanks for your fast support.

Sincerely
Philipp Hahn
-- 
Philipp Hahn           Open Source Software Engineer      hahn@univention.de
Univention GmbH        Linux for Your Business        fon: +49 421 22 232- 0
Mary-Somerville-Str.1  D-28359 Bremen                 fax: +49 421 22 232-99
                                                   http://www.univention.de/

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
  2011-08-04 16:24 ` [Qemu-devel] [PATCH v2 " Kevin Wolf
  2011-08-04 17:19   ` Philipp Hahn
@ 2011-08-05  6:35   ` Frediano Ziglio
  2011-08-05  7:51     ` Kevin Wolf
  1 sibling, 1 reply; 7+ messages in thread
From: Frediano Ziglio @ 2011-08-05  6:35 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: stefanha, qemu-devel, hahn

2011/8/4 Kevin Wolf <kwolf@redhat.com>:
> When loading an internal snapshot whose L1 table is smaller than the current L1
> table, the size of the current L1 would be shrunk to the snapshot's L1 size in
> memory, but not on disk. This lead to incorrect refcount updates and eventuelly
> to image corruption.
>
> Instead of writing the new L1 size to disk, this simply retains the bigger L1
> size that is currently in use and makes sure that the unused part is zeroed.
>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>
> And the moment you send it out, you notice that it's wrong... *sigh*
>
> v2:
> - Check for s->l1_size > sn->l1_size in order to avoid disasters...
>
> Philipp, I think this should fix your corruption. Please give it a try.
>
> Anthony, this must go into 0.15. Given the short time until -rc2, do you prefer
> to pick it up directly or should I send a pull request tomorrow? The patch
> looks obvious, is tested with the given testcase and survives a basic
> qemu-iotests run (though qemu-iotests doesn't exercise snapshots a lot)
>
> Stefan, please review :-)
>
>  block/qcow2-snapshot.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
> index 74823a5..6972e66 100644
> --- a/block/qcow2-snapshot.c
> +++ b/block/qcow2-snapshot.c
> @@ -330,8 +330,11 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
>     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
>         goto fail;
>
> -    s->l1_size = sn->l1_size;
> +    if (s->l1_size > sn->l1_size) {
> +        memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
> +    }
>     l1_size2 = s->l1_size * sizeof(uint64_t);
> +
>     /* copy the snapshot l1 table to the current l1 table */
>     if (bdrv_pread(bs->file, sn->l1_table_offset,
>                    s->l1_table, l1_size2) != l1_size2)
> --
> 1.7.6
>

This patch looked odd at first sight. First a qcow2_grow_l1_table is
called to shrink L1 so perhaps should be qcow2_resize_l1_table.
Perhaps also it would be better to clean entries in
qcow2_grow_l1_table instead of  qcow2_snapshot_goto to avoid same
problem in different calls to qcow2_grow_l1_table. The other oddity
(still to understand) is: why does some code use l1_table above
l1_size ??

Frediano

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
  2011-08-05  6:35   ` Frediano Ziglio
@ 2011-08-05  7:51     ` Kevin Wolf
  2011-08-05  8:28       ` Frediano Ziglio
  0 siblings, 1 reply; 7+ messages in thread
From: Kevin Wolf @ 2011-08-05  7:51 UTC (permalink / raw)
  To: Frediano Ziglio; +Cc: stefanha, qemu-devel, hahn

Am 05.08.2011 08:35, schrieb Frediano Ziglio:
> 2011/8/4 Kevin Wolf <kwolf@redhat.com>:
>> When loading an internal snapshot whose L1 table is smaller than the current L1
>> table, the size of the current L1 would be shrunk to the snapshot's L1 size in
>> memory, but not on disk. This lead to incorrect refcount updates and eventuelly
>> to image corruption.
>>
>> Instead of writing the new L1 size to disk, this simply retains the bigger L1
>> size that is currently in use and makes sure that the unused part is zeroed.
>>
>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>> ---
>>
>> And the moment you send it out, you notice that it's wrong... *sigh*
>>
>> v2:
>> - Check for s->l1_size > sn->l1_size in order to avoid disasters...
>>
>> Philipp, I think this should fix your corruption. Please give it a try.
>>
>> Anthony, this must go into 0.15. Given the short time until -rc2, do you prefer
>> to pick it up directly or should I send a pull request tomorrow? The patch
>> looks obvious, is tested with the given testcase and survives a basic
>> qemu-iotests run (though qemu-iotests doesn't exercise snapshots a lot)
>>
>> Stefan, please review :-)
>>
>>  block/qcow2-snapshot.c |    5 ++++-
>>  1 files changed, 4 insertions(+), 1 deletions(-)
>>
>> diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
>> index 74823a5..6972e66 100644
>> --- a/block/qcow2-snapshot.c
>> +++ b/block/qcow2-snapshot.c
>> @@ -330,8 +330,11 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
>>     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
>>         goto fail;
>>
>> -    s->l1_size = sn->l1_size;
>> +    if (s->l1_size > sn->l1_size) {
>> +        memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
>> +    }
>>     l1_size2 = s->l1_size * sizeof(uint64_t);
>> +
>>     /* copy the snapshot l1 table to the current l1 table */
>>     if (bdrv_pread(bs->file, sn->l1_table_offset,
>>                    s->l1_table, l1_size2) != l1_size2)
>> --
>> 1.7.6
>>
> 
> This patch looked odd at first sight. First a qcow2_grow_l1_table is
> called to shrink L1 so perhaps should be qcow2_resize_l1_table.

No, it doesn't shrink the table:

    if (min_size <= s->l1_size)
        return 0;

> Perhaps also it would be better to clean entries in
> qcow2_grow_l1_table instead of  qcow2_snapshot_goto to avoid same
> problem in different calls to qcow2_grow_l1_table. The other oddity
> (still to understand) is: why does some code use l1_table above
> l1_size ??

Which code do you mean specifically?

Kevin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
  2011-08-05  7:51     ` Kevin Wolf
@ 2011-08-05  8:28       ` Frediano Ziglio
  2011-08-05  9:37         ` Frediano Ziglio
  0 siblings, 1 reply; 7+ messages in thread
From: Frediano Ziglio @ 2011-08-05  8:28 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: stefanha, qemu-devel, hahn

2011/8/5 Kevin Wolf <kwolf@redhat.com>:
> Am 05.08.2011 08:35, schrieb Frediano Ziglio:
>> 2011/8/4 Kevin Wolf <kwolf@redhat.com>:
>>> When loading an internal snapshot whose L1 table is smaller than the current L1
>>> table, the size of the current L1 would be shrunk to the snapshot's L1 size in
>>> memory, but not on disk. This lead to incorrect refcount updates and eventuelly
>>> to image corruption.
>>>
>>> Instead of writing the new L1 size to disk, this simply retains the bigger L1
>>> size that is currently in use and makes sure that the unused part is zeroed.
>>>
>>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>>> ---
>>>
>>> And the moment you send it out, you notice that it's wrong... *sigh*
>>>
>>> v2:
>>> - Check for s->l1_size > sn->l1_size in order to avoid disasters...
>>>
>>> Philipp, I think this should fix your corruption. Please give it a try.
>>>
>>> Anthony, this must go into 0.15. Given the short time until -rc2, do you prefer
>>> to pick it up directly or should I send a pull request tomorrow? The patch
>>> looks obvious, is tested with the given testcase and survives a basic
>>> qemu-iotests run (though qemu-iotests doesn't exercise snapshots a lot)
>>>
>>> Stefan, please review :-)
>>>
>>>  block/qcow2-snapshot.c |    5 ++++-
>>>  1 files changed, 4 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
>>> index 74823a5..6972e66 100644
>>> --- a/block/qcow2-snapshot.c
>>> +++ b/block/qcow2-snapshot.c
>>> @@ -330,8 +330,11 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
>>>     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
>>>         goto fail;
>>>
>>> -    s->l1_size = sn->l1_size;
>>> +    if (s->l1_size > sn->l1_size) {
>>> +        memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
>>> +    }
>>>     l1_size2 = s->l1_size * sizeof(uint64_t);
>>> +
>>>     /* copy the snapshot l1 table to the current l1 table */
>>>     if (bdrv_pread(bs->file, sn->l1_table_offset,
>>>                    s->l1_table, l1_size2) != l1_size2)
>>> --
>>> 1.7.6
>>>
>>
>> This patch looked odd at first sight. First a qcow2_grow_l1_table is
>> called to shrink L1 so perhaps should be qcow2_resize_l1_table.
>
> No, it doesn't shrink the table:
>
>    if (min_size <= s->l1_size)
>        return 0;
>

Yes, but perhaps returning success and not clipping anything is not
that correct, perhaps qcow2_snapshot_goto should not call
qcow2_grow_l1_table with a shorter value.

>> Perhaps also it would be better to clean entries in
>> qcow2_grow_l1_table instead of  qcow2_snapshot_goto to avoid same
>> problem in different calls to qcow2_grow_l1_table. The other oddity
>> (still to understand) is: why does some code use l1_table above
>> l1_size ??
>
> Which code do you mean specifically?
>
> Kevin
>

I think this is the issue

# 1204 -> 128 cluster per L2 entry -> 128k per L2 entry
# 128 cluster per L1 entry -> 16M per L1 entry
qemu-img create -f qcow2 /tmp/sn.qcow2 16m -o cluster_size=1024
qemu-img snapshot -c foo /tmp/sn.qcow2
# extend L1
qemu-io -c 'write -b 0 4M' /tmp/sn.qcow2
# shrink
qemu-img snapshot -a foo /tmp/sn.qcow2
qemu-img check /tmp/sn.qcow2

Well... I was trying to get a leak and got a core instead. I removed
your patch and got leaks.

also, should not be

    memset(s->l1_table + sn->l1_size, 0, (s->l1_size - sn->l1_size) *
sizeof(uint64_t));

instead of

    memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);

Frediano

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto
  2011-08-05  8:28       ` Frediano Ziglio
@ 2011-08-05  9:37         ` Frediano Ziglio
  0 siblings, 0 replies; 7+ messages in thread
From: Frediano Ziglio @ 2011-08-05  9:37 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: stefanha, qemu-devel, hahn

2011/8/5 Frediano Ziglio <freddy77@gmail.com>:
> 2011/8/5 Kevin Wolf <kwolf@redhat.com>:
>> Am 05.08.2011 08:35, schrieb Frediano Ziglio:
>>> 2011/8/4 Kevin Wolf <kwolf@redhat.com>:
>>>> When loading an internal snapshot whose L1 table is smaller than the current L1
>>>> table, the size of the current L1 would be shrunk to the snapshot's L1 size in
>>>> memory, but not on disk. This lead to incorrect refcount updates and eventuelly
>>>> to image corruption.
>>>>
>>>> Instead of writing the new L1 size to disk, this simply retains the bigger L1
>>>> size that is currently in use and makes sure that the unused part is zeroed.
>>>>
>>>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>>>> ---
>>>>
>>>> And the moment you send it out, you notice that it's wrong... *sigh*
>>>>
>>>> v2:
>>>> - Check for s->l1_size > sn->l1_size in order to avoid disasters...
>>>>
>>>> Philipp, I think this should fix your corruption. Please give it a try.
>>>>
>>>> Anthony, this must go into 0.15. Given the short time until -rc2, do you prefer
>>>> to pick it up directly or should I send a pull request tomorrow? The patch
>>>> looks obvious, is tested with the given testcase and survives a basic
>>>> qemu-iotests run (though qemu-iotests doesn't exercise snapshots a lot)
>>>>
>>>> Stefan, please review :-)
>>>>
>>>>  block/qcow2-snapshot.c |    5 ++++-
>>>>  1 files changed, 4 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
>>>> index 74823a5..6972e66 100644
>>>> --- a/block/qcow2-snapshot.c
>>>> +++ b/block/qcow2-snapshot.c
>>>> @@ -330,8 +330,11 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
>>>>     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
>>>>         goto fail;
>>>>
>>>> -    s->l1_size = sn->l1_size;
>>>> +    if (s->l1_size > sn->l1_size) {
>>>> +        memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
>>>> +    }
>>>>     l1_size2 = s->l1_size * sizeof(uint64_t);
>>>> +
>>>>     /* copy the snapshot l1 table to the current l1 table */
>>>>     if (bdrv_pread(bs->file, sn->l1_table_offset,
>>>>                    s->l1_table, l1_size2) != l1_size2)
>>>> --
>>>> 1.7.6
>>>>
>>>
>>> This patch looked odd at first sight. First a qcow2_grow_l1_table is
>>> called to shrink L1 so perhaps should be qcow2_resize_l1_table.
>>
>> No, it doesn't shrink the table:
>>
>>    if (min_size <= s->l1_size)
>>        return 0;
>>
>
> Yes, but perhaps returning success and not clipping anything is not
> that correct, perhaps qcow2_snapshot_goto should not call
> qcow2_grow_l1_table with a shorter value.
>
>>> Perhaps also it would be better to clean entries in
>>> qcow2_grow_l1_table instead of  qcow2_snapshot_goto to avoid same
>>> problem in different calls to qcow2_grow_l1_table. The other oddity
>>> (still to understand) is: why does some code use l1_table above
>>> l1_size ??
>>
>> Which code do you mean specifically?
>>
>> Kevin
>>
>
> I think this is the issue
>
> # 1204 -> 128 cluster per L2 entry -> 128k per L2 entry
> # 128 cluster per L1 entry -> 16M per L1 entry
> qemu-img create -f qcow2 /tmp/sn.qcow2 16m -o cluster_size=1024
> qemu-img snapshot -c foo /tmp/sn.qcow2
> # extend L1
> qemu-io -c 'write -b 0 4M' /tmp/sn.qcow2
> # shrink
> qemu-img snapshot -a foo /tmp/sn.qcow2
> qemu-img check /tmp/sn.qcow2
>
> Well... I was trying to get a leak and got a core instead. I removed
> your patch and got leaks.
>
> also, should not be
>
>    memset(s->l1_table + sn->l1_size, 0, (s->l1_size - sn->l1_size) *
> sizeof(uint64_t));
>
> instead of
>
>    memset(s->l1_table + sn->l1_size, 0, s->l1_size - sn->l1_size);
>
> Frediano
>

This patch fix Philipp and my problem

diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 74823a5..0e5fc13 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -330,14 +330,16 @@ int qcow2_snapshot_goto(BlockDriverState *bs,
const char *snapshot_id)
     if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
         goto fail;

-    s->l1_size = sn->l1_size;
-    l1_size2 = s->l1_size * sizeof(uint64_t);
+    if (s->l1_size > sn->l1_size) {
+        memset(s->l1_table + sn->l1_size, 0, (s->l1_size -
sn->l1_size) * sizeof(uint64_t));
+    }
+    l1_size2 = sn->l1_size * sizeof(uint64_t);
     /* copy the snapshot l1 table to the current l1 table */
     if (bdrv_pread(bs->file, sn->l1_table_offset,
                    s->l1_table, l1_size2) != l1_size2)
         goto fail;
     if (bdrv_pwrite_sync(bs->file, s->l1_table_offset,
-                    s->l1_table, l1_size2) < 0)
+                    s->l1_table, s->l1_size * sizeof(uint64_t)) < 0)
         goto fail;
     for(i = 0;i < s->l1_size; i++) {
         be64_to_cpus(&s->l1_table[i]);


Frediano

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-08-05  9:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <Message-Id: <1312474673-2705-1-git-send-email-kwolf@redhat.com>
2011-08-04 16:17 ` [Qemu-devel] [PATCH 0.15.0] qcow2: Fix L1 table size after bdrv_snapshot_goto Kevin Wolf
2011-08-04 16:24 ` [Qemu-devel] [PATCH v2 " Kevin Wolf
2011-08-04 17:19   ` Philipp Hahn
2011-08-05  6:35   ` Frediano Ziglio
2011-08-05  7:51     ` Kevin Wolf
2011-08-05  8:28       ` Frediano Ziglio
2011-08-05  9:37         ` Frediano Ziglio

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.