Message ID | 577BB031.8000902@redhat.com |
---|---|
State | New |
Headers | show |
On 05/07/2016 15:03, Eric Blake wrote: > bs->bl.pwrite_zeroes_alignment = > - iscsilun->bl.opt_unmap_gran * iscsilun->block_size; > + pow2floor(iscsilun->bl.opt_unmap_gran * iscsilun->block_size); > } else { > bs->bl.pwrite_zeroes_alignment = iscsilun->block_size; > } > bs->bl.opt_transfer_length = > - sector_limits_lun2qemu(iscsilun->bl.opt_xfer_len, iscsilun); > + pow2floor(sector_limits_lun2qemu(iscsilun->bl.opt_xfer_len, > iscsilun)); I see no reason why the alignment needs to be a power of two in block/io.c, if you use / % * instead of &. Paolo
diff --git i/block/iscsi.c w/block/iscsi.c index 9bb5ff6..556486c 100644 --- i/block/iscsi.c +++ w/block/iscsi.c @@ -1732,12 +1732,12 @@ static void iscsi_refresh_limits(BlockDriverState *bs, Error **errp) } if (iscsilun->lbp.lbpws) { bs->bl.pwrite_zeroes_alignment = - iscsilun->bl.opt_unmap_gran * iscsilun->block_size; + pow2floor(iscsilun->bl.opt_unmap_gran * iscsilun->block_size); } else { bs->bl.pwrite_zeroes_alignment = iscsilun->block_size; } bs->bl.opt_transfer_length = - sector_limits_lun2qemu(iscsilun->bl.opt_xfer_len, iscsilun); + pow2floor(sector_limits_lun2qemu(iscsilun->bl.opt_xfer_len, iscsilun)); }