]> Git Repo - qemu.git/commitdiff
block drivers: add discard/write_zeroes properties to bdrv_get_info implementation
authorPaolo Bonzini <[email protected]>
Fri, 22 Nov 2013 12:39:50 +0000 (13:39 +0100)
committerStefan Hajnoczi <[email protected]>
Tue, 3 Dec 2013 14:26:49 +0000 (15:26 +0100)
Signed-off-by: Paolo Bonzini <[email protected]>
Reviewed-by: Peter Lieven <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
block/qcow2.c
block/qed.c
block/vdi.c
block/vhdx.c
block/vpc.c

index 8e2b6c7548ad0ec95869e11798d1aff3a10ad81a..41e454a2f113cbf0ef5224167911a52fd2ac5d50 100644 (file)
@@ -1893,6 +1893,8 @@ static coroutine_fn int qcow2_co_flush_to_os(BlockDriverState *bs)
 static int qcow2_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
 {
     BDRVQcowState *s = bs->opaque;
+    bdi->unallocated_blocks_are_zero = true;
+    bdi->can_write_zeroes_with_unmap = (s->qcow_version >= 3);
     bdi->cluster_size = s->cluster_size;
     bdi->vm_state_offset = qcow2_vm_state_offset(s);
     return 0;
index adc2736dd7766d34135e663c99efd8f3046ec7fd..59516a5704eff1db18c3764dff85d58650e338c3 100644 (file)
@@ -1475,6 +1475,8 @@ static int bdrv_qed_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
     memset(bdi, 0, sizeof(*bdi));
     bdi->cluster_size = s->header.cluster_size;
     bdi->is_dirty = s->header.features & QED_F_NEED_CHECK;
+    bdi->unallocated_blocks_are_zero = true;
+    bdi->can_write_zeroes_with_unmap = true;
     return 0;
 }
 
index b6ec0020dcbf314674e576fba084ad948b47273a..2d7490f173db0e717b0fdf3b03172f4420a39f42 100644 (file)
@@ -331,6 +331,7 @@ static int vdi_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
     logout("\n");
     bdi->cluster_size = s->block_size;
     bdi->vm_state_offset = 0;
+    bdi->unallocated_blocks_are_zero = true;
     return 0;
 }
 
index ed6fa53b87ccb694003389399f91b15f4f39ee2b..67bbe103a13785440eda15dd18d44a34050543cf 100644 (file)
@@ -1049,6 +1049,9 @@ static int vhdx_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
 
     bdi->cluster_size = s->block_size;
 
+    bdi->unallocated_blocks_are_zero =
+        (s->params.data_bits & VHDX_PARAMS_HAS_PARENT) == 0;
+
     return 0;
 }
 
index 551876fef7f409df527dbef585bcbd05dd1a4d11..1d326cbf44794b2f18991e259b65186f3d4d5a64 100644 (file)
@@ -464,6 +464,7 @@ static int vpc_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
         bdi->cluster_size = s->block_size;
     }
 
+    bdi->unallocated_blocks_are_zero = true;
     return 0;
 }
 
This page took 0.040457 seconds and 4 git commands to generate.