On 09/17/2010 11:18 AM, Kevin Wolf wrote:
For copy on write (this includes any cluster allocations that don't fill the
whole cluster with one request), what qcow2 does looks like this:
1. Allocate new clusters (increase refcounts)
2. bdrv_flush
3. Copy sectors before the first touched one
4. bdrv_flush
5. Copy sectors after the last touched one
6. bdrv_flush
7. Update the L2 table to point to the new clusters
Step 2 and 4 are not necessary. This series moves flushes around to get all
of these three bdrv_flush calls merged into one.
Makes sense to me.
Regards,
Anthony Liguori
Kevin Wolf (4):
qcow2: Move sync out of write_refcount_block_entries
qcow2: Move sync out of update_refcount
qcow2: Move sync out of qcow2_alloc_clusters
qcow2: Get rid of additional sync on COW
block/qcow2-cluster.c | 11 ++++++++++-
block/qcow2-refcount.c | 13 ++++++++++++-
block/qcow2-snapshot.c | 2 ++
3 files changed, 24 insertions(+), 2 deletions(-)