Re: [Qemu-devel] About the snapshot

2011-12-06 Thread Stefan Hajnoczi
On Tue, Dec 6, 2011 at 9:07 AM, Zhi Hui Li zhihu...@linux.vnet.ibm.com wrote:

 1) :

 for example:

 BDRVQcowState *s = bs-opaque;

 s-snapshots
 s-nb_snapshots


 1:use the command:   qemu-img snapshot ./test.qcow2  -c aa
 the memory of the s-snapshot don't free,
 if the s-nb_snapshots is large, Does it have some problems.

 2: use the command:  qemu-system-x86_64  ./test.qcow2 -snapshot
 when the program ends, Does it need to free the s-snapshots ?

These two commands are unrelated.  QEMU uses the term snapshot for
several different features:

1. qemu-img snapshot refers to internal snapshots that are contained
within qcow2 image files.  The savevm/loadvm/delvm monitor commands
operate on internal snapshots.

2. qemu -snapshot refers to a temporary qcow2 image file created to
buffer any data that the guest writes.  When QEMU exits your disk
image is not modified and the temporary qcow2 file is deleted.  You
can also apply the buffer to the disk image using the commit monitor
command.

 2):
 in the function of
 qcow2_update_snapshot_refcount

 it has some   goto fail  ;
 if the function runs some times, then something makes it goto fail,
 I am not sure whether it will make the refcount  incorrect.

When an error occurs its possible that refcount leaks are introduced
(the refcount was increment but will never be used), but we should
never decrement a reference that is still in use.

Please be more specific about the problem so that Kevin or I can take a look.

Stefan



Re: [Qemu-devel] About the snapshot

2011-12-06 Thread Zhi Hui Li

On 2011年12月06日 17:40, Stefan Hajnoczi wrote:

On Tue, Dec 6, 2011 at 9:07 AM, Zhi Hui Lizhihu...@linux.vnet.ibm.com  wrote:


1) :

for example:

BDRVQcowState *s = bs-opaque;

s-snapshots
s-nb_snapshots


1:use the command:   qemu-img snapshot ./test.qcow2  -c aa
the memory of the s-snapshot don't free,
if the s-nb_snapshots is large, Does it have some problems.

2: use the command:  qemu-system-x86_64  ./test.qcow2 -snapshot
when the program ends, Does it need to free the s-snapshots ?


These two commands are unrelated.  QEMU uses the term snapshot for
several different features:

1. qemu-img snapshot refers to internal snapshots that are contained
within qcow2 image files.  The savevm/loadvm/delvm monitor commands
operate on internal snapshots.

2. qemu -snapshot refers to a temporary qcow2 image file created to
buffer any data that the guest writes.  When QEMU exits your disk
image is not modified and the temporary qcow2 file is deleted.  You
can also apply the buffer to the disk image using the commit monitor
command.


yes, I understand what you say, but the qemu-img and savevm both call 
the function of qcow2_snapshot_create, when I use the command qemu-img 
snapshot ./test.qcow2  -c aa,

but the memory of the s-snapshot don't free.




2):
in the function of
qcow2_update_snapshot_refcount

it has some   goto fail  ;
if the function runs some times, then something makes it goto fail,
I am not sure whether it will make the refcount  incorrect.


When an error occurs its possible that refcount leaks are introduced
(the refcount was increment but will never be used), but we should
never decrement a reference that is still in use.

Please be more specific about the problem so that Kevin or I can take a look.

Stefan


Ok, I got it.

thank you very much !




Re: [Qemu-devel] About the snapshot

2011-12-06 Thread Stefan Hajnoczi
On Tue, Dec 6, 2011 at 10:01 AM, Zhi Hui Li zhihu...@linux.vnet.ibm.com wrote:
 On 2011年12月06日 17:40, Stefan Hajnoczi wrote:

 On Tue, Dec 6, 2011 at 9:07 AM, Zhi Hui Lizhihu...@linux.vnet.ibm.com
  wrote:


 1) :

 for example:

 BDRVQcowState *s = bs-opaque;

 s-snapshots
 s-nb_snapshots


 1:use the command:   qemu-img snapshot ./test.qcow2  -c aa
 the memory of the s-snapshot don't free,
 if the s-nb_snapshots is large, Does it have some problems.

 2: use the command:  qemu-system-x86_64  ./test.qcow2 -snapshot
 when the program ends, Does it need to free the s-snapshots ?


 These two commands are unrelated.  QEMU uses the term snapshot for
 several different features:

 1. qemu-img snapshot refers to internal snapshots that are contained
 within qcow2 image files.  The savevm/loadvm/delvm monitor commands
 operate on internal snapshots.

 2. qemu -snapshot refers to a temporary qcow2 image file created to
 buffer any data that the guest writes.  When QEMU exits your disk
 image is not modified and the temporary qcow2 file is deleted.  You
 can also apply the buffer to the disk image using the commit monitor
 command.


 yes, I understand what you say, but the qemu-img and savevm both call the
 function of qcow2_snapshot_create, when I use the command qemu-img snapshot
 ./test.qcow2  -c aa,
 but the memory of the s-snapshot don't free.

Okay, I think you're saying that in #1 s-snapshots is leaked because
qcow2_free_snapshots() is not being called from qcow2_close().

Do you want to send a patch to fix this?

Stefan



Re: [Qemu-devel] About the snapshot

2011-12-06 Thread Zhi Hui Li
2011/12/6 Stefan Hajnoczi stefa...@gmail.com

  On Tue, Dec 6, 2011 at 10:01 AM, Zhi Hui Li zhihu...@linux.vnet.ibm.com
 wrote:
  On 2011年12月06日 17:40, Stefan Hajnoczi wrote:
 
  On Tue, Dec 6, 2011 at 9:07 AM, Zhi Hui Lizhihu...@linux.vnet.ibm.com
   wrote:
 
 
  1) :
 
  for example:
 
  BDRVQcowState *s = bs-opaque;
 
  s-snapshots
  s-nb_snapshots
 
 
  1:use the command:   qemu-img snapshot ./test.qcow2  -c aa
  the memory of the s-snapshot don't free,
  if the s-nb_snapshots is large, Does it have some problems.
 
  2: use the command:  qemu-system-x86_64  ./test.qcow2 -snapshot
  when the program ends, Does it need to free the s-snapshots ?
 
 Okay, I think you're saying that in #1 s-snapshots is leaked because
 qcow2_free_snapshots() is not being called from qcow2_close().

 Do you want to send a patch to fix this?


 Ok, I will send a patch  tomorrow.
But I think in the #2  it also need to call qcow2_free_snapshots() , if you
have called several times savevm,
the s-snapshots will very large, when the process end, it also need to
free.

Thank you very much for your feedback !


 Stefan




Re: [Qemu-devel] About the snapshot

2011-12-06 Thread Stefan Hajnoczi
2011/12/6 Zhi Hui Li zhihu...@linux.vnet.ibm.com:


 2011/12/6 Stefan Hajnoczi stefa...@gmail.com

 On Tue, Dec 6, 2011 at 10:01 AM, Zhi Hui Li zhihu...@linux.vnet.ibm.com
 wrote:
  On 2011年12月06日 17:40, Stefan Hajnoczi wrote:
 
  On Tue, Dec 6, 2011 at 9:07 AM, Zhi Hui Lizhihu...@linux.vnet.ibm.com
   wrote:
 
 
  1) :
 
  for example:
 
  BDRVQcowState *s = bs-opaque;
 
  s-snapshots
  s-nb_snapshots
 
 
  1:use the command:   qemu-img snapshot ./test.qcow2  -c aa
  the memory of the s-snapshot don't free,
  if the s-nb_snapshots is large, Does it have some problems.
 
  2: use the command:  qemu-system-x86_64  ./test.qcow2 -snapshot
  when the program ends, Does it need to free the s-snapshots ?
 
 Okay, I think you're saying that in #1 s-snapshots is leaked because
 qcow2_free_snapshots() is not being called from qcow2_close().

 Do you want to send a patch to fix this?


 Ok, I will send a patch  tomorrow.
 But I think in the #2  it also need to call qcow2_free_snapshots() , if you
 have called several times savevm,
 the s-snapshots will very large, when the process end, it also need to
 free.

Right, I think I understand what you're saying.  I was thinking about
what #1 and #2 mean differently, but it doesn't matter.

If qcow2_close() frees s-snapshots then the problem is solved in all
possible qcow2 use cases, including #2 with savevm.

Stefan