Message ID | 20200430133007.170335-5-kwolf@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vmdk: Fix zero cluster handling | expand |
On 4/30/20 8:30 AM, Kevin Wolf wrote: > If a cluster is already zeroed, we don't have to call vmdk_L2update(), > which is rather slow because it flushes the image file. > > Signed-off-by: Kevin Wolf <kwolf@redhat.com> > --- > block/vmdk.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > Reviewed-by: Eric Blake <eblake@redhat.com> > diff --git a/block/vmdk.c b/block/vmdk.c > index da25b8992e..dcd30f1419 100644 > --- a/block/vmdk.c > +++ b/block/vmdk.c > @@ -2013,7 +2013,7 @@ static int vmdk_pwritev(BlockDriverState *bs, uint64_t offset, > offset_in_cluster == 0 && > n_bytes >= extent->cluster_sectors * BDRV_SECTOR_SIZE) { > n_bytes = extent->cluster_sectors * BDRV_SECTOR_SIZE; > - if (!zero_dry_run) { > + if (!zero_dry_run && ret != VMDK_ZEROED) { > /* update L2 tables */ > if (vmdk_L2update(extent, &m_data, VMDK_GTE_ZEROED) > != VMDK_OK) { >
diff --git a/block/vmdk.c b/block/vmdk.c index da25b8992e..dcd30f1419 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -2013,7 +2013,7 @@ static int vmdk_pwritev(BlockDriverState *bs, uint64_t offset, offset_in_cluster == 0 && n_bytes >= extent->cluster_sectors * BDRV_SECTOR_SIZE) { n_bytes = extent->cluster_sectors * BDRV_SECTOR_SIZE; - if (!zero_dry_run) { + if (!zero_dry_run && ret != VMDK_ZEROED) { /* update L2 tables */ if (vmdk_L2update(extent, &m_data, VMDK_GTE_ZEROED) != VMDK_OK) {
If a cluster is already zeroed, we don't have to call vmdk_L2update(), which is rather slow because it flushes the image file. Signed-off-by: Kevin Wolf <kwolf@redhat.com> --- block/vmdk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)