From: Peter Lieven Date: Wed, 27 Nov 2013 10:07:03 +0000 (+0100) Subject: block/iscsi: set bdi->cluster_size X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=1c0704a556dbb004a3b82791779760f418053951;p=qemu.git block/iscsi: set bdi->cluster_size this patch aims to set bdi->cluster_size to the internal page size of the iscsi target so that enabled callers can align requests properly. Reviewed-by: Paolo Bonzini Signed-off-by: Peter Lieven Signed-off-by: Stefan Hajnoczi --- diff --git a/block/iscsi.c b/block/iscsi.c index 93fee6d1df..75d6b875e4 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -1580,6 +1580,13 @@ static int iscsi_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) IscsiLun *iscsilun = bs->opaque; bdi->unallocated_blocks_are_zero = !!iscsilun->lbprz; bdi->can_write_zeroes_with_unmap = iscsilun->lbprz && iscsilun->lbp.lbpws; + /* Guess the internal cluster (page) size of the iscsi target by the means + * of opt_unmap_gran. Transfer the unmap granularity only if it has a + * reasonable size for bdi->cluster_size */ + if (iscsilun->bl.opt_unmap_gran * iscsilun->block_size >= 64 * 1024 && + iscsilun->bl.opt_unmap_gran * iscsilun->block_size <= 16 * 1024 * 1024) { + bdi->cluster_size = iscsilun->bl.opt_unmap_gran * iscsilun->block_size; + } return 0; }