From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42434) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Viomh-00006G-1O for qemu-devel@nongnu.org; Tue, 19 Nov 2013 12:08:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vioma-0002io-VF for qemu-devel@nongnu.org; Tue, 19 Nov 2013 12:08:18 -0500 Received: from mx1.redhat.com ([209.132.183.28]:29402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vioma-0002ii-Me for qemu-devel@nongnu.org; Tue, 19 Nov 2013 12:08:12 -0500 From: Paolo Bonzini Date: Tue, 19 Nov 2013 18:07:30 +0100 Message-Id: <1384880863-10434-8-git-send-email-pbonzini@redhat.com> In-Reply-To: <1384880863-10434-1-git-send-email-pbonzini@redhat.com> References: <1384880863-10434-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH v2 07/20] vpc, vhdx: add get_info List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, pl@kamp.de, stefanha@redhat.com Signed-off-by: Paolo Bonzini --- block/vhdx.c | 11 +++++++++++ block/vpc.c | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/block/vhdx.c b/block/vhdx.c index 7d1af96..9ab2b39 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -1043,6 +1043,16 @@ static void vhdx_block_translate(BDRVVHDXState *s, int64_t sector_num, } +static int vhdx_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +{ + BDRVVHDXState *s = bs->opaque; + + bdi->cluster_size = + (s->logical_sector_size / BDRV_SECTOR_SIZE) * s->block_size; + + return 0; +} + static coroutine_fn int vhdx_co_readv(BlockDriverState *bs, int64_t sector_num, int nb_sectors, QEMUIOVector *qiov) @@ -1885,6 +1895,7 @@ static BlockDriver bdrv_vhdx = { .bdrv_co_readv = vhdx_co_readv, .bdrv_co_writev = vhdx_co_writev, .bdrv_create = vhdx_create, + .bdrv_get_info = vhdx_get_info, .create_options = vhdx_create_options, }; diff --git a/block/vpc.c b/block/vpc.c index 577cc45..551876f 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -455,6 +455,18 @@ fail: return -1; } +static int vpc_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +{ + BDRVVPCState *s = (BDRVVPCState *)bs->opaque; + VHDFooter *footer = (VHDFooter *) s->footer_buf; + + if (cpu_to_be32(footer->type) != VHD_FIXED) { + bdi->cluster_size = s->block_size; + } + + return 0; +} + static int vpc_read(BlockDriverState *bs, int64_t sector_num, uint8_t *buf, int nb_sectors) { @@ -857,6 +869,8 @@ static BlockDriver bdrv_vpc = { .bdrv_read = vpc_co_read, .bdrv_write = vpc_co_write, + .bdrv_get_info = vpc_get_info, + .create_options = vpc_create_options, .bdrv_has_zero_init = vpc_has_zero_init, }; -- 1.8.4.2