[Qemu-block] [PATCH v3] fixup! iscsi: Fix divide-by-zero regression on raw SG devices
[keep original commit message] Reported-by: Holger SchranzSigned-off-by: Eric Blake CC: qemu-sta...@nongnu.org --- Paolo just sent a pull request, but if I'm not too late, this should be squashed in. If I am too late, then we can rework the commit message to make it this is an obvious followup. v3: preserve 4k iscsilun->block_size v2: avoid second assertion failure --- block/iscsi.c | 10 +++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/block/iscsi.c b/block/iscsi.c index c01e955..7bb6e5d 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -1813,10 +1813,14 @@ static void iscsi_refresh_limits(BlockDriverState *bs, Error **errp) IscsiLun *iscsilun = bs->opaque; uint64_t max_xfer_len = iscsilun->use_16_for_rw ? 0x : 0x; -unsigned int block_size = MIN_NON_ZERO(BDRV_SECTOR_SIZE, - iscsilun->block_size); +unsigned int block_size = iscsilun->block_size; -assert(iscsilun->block_size >= BDRV_SECTOR_SIZE || bs->sg); +if (!block_size) { +assert(bs->sg); +block_size = BDRV_SECTOR_SIZE; +} else { +assert(block_size >= BDRV_SECTOR_SIZE); +} bs->bl.request_alignment = block_size; -- 2.7.4
Re: [Qemu-block] [PATCH v3] fixup! iscsi: Fix divide-by-zero regression on raw SG devices
On 09/22/2016 01:30 PM, Paolo Bonzini wrote: > >> Paolo just sent a pull request, but if I'm not too late, this should >> be squashed in. If I am too late, then we can rework the commit >> message to make it this is an obvious followup. > > I just replaced MIN_NON_ZERO with MAX. > Works for me, and a bit more elegant. -- Eric Blake eblake redhat com+1-919-301-3266 Libvirt virtualization library http://libvirt.org signature.asc Description: OpenPGP digital signature
Re: [Qemu-block] [PATCH v3] fixup! iscsi: Fix divide-by-zero regression on raw SG devices
> Paolo just sent a pull request, but if I'm not too late, this should > be squashed in. If I am too late, then we can rework the commit > message to make it this is an obvious followup. I just replaced MIN_NON_ZERO with MAX. Paolo > v3: preserve 4k iscsilun->block_size > v2: avoid second assertion failure > --- > block/iscsi.c | 10 +++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/block/iscsi.c b/block/iscsi.c > index c01e955..7bb6e5d 100644 > --- a/block/iscsi.c > +++ b/block/iscsi.c > @@ -1813,10 +1813,14 @@ static void iscsi_refresh_limits(BlockDriverState > *bs, Error **errp) > > IscsiLun *iscsilun = bs->opaque; > uint64_t max_xfer_len = iscsilun->use_16_for_rw ? 0x : 0x; > -unsigned int block_size = MIN_NON_ZERO(BDRV_SECTOR_SIZE, > - iscsilun->block_size); > +unsigned int block_size = iscsilun->block_size; > > -assert(iscsilun->block_size >= BDRV_SECTOR_SIZE || bs->sg); > +if (!block_size) { > +assert(bs->sg); > +block_size = BDRV_SECTOR_SIZE; > +} else { > +assert(block_size >= BDRV_SECTOR_SIZE); > +} > > bs->bl.request_alignment = block_size; >