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 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. > > > 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