[Qemu-block] [PATCH v3] fixup! iscsi: Fix divide-by-zero regression on raw SG devices

2016-09-22 Thread Eric Blake
[keep original commit message]

Reported-by: Holger Schranz 
Signed-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

2016-09-22 Thread Eric Blake
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

2016-09-22 Thread Paolo Bonzini

> 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;
>