Message ID | 30369c9b-974f-67d4-322f-00d30a25519a@kamp.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 01/08/2018 07:20 AM, Peter Lieven wrote: > Am 08.01.2018 um 04:09 schrieb Fam Zheng: >> After the out label there is a check on iTask.task but it is not >> initialized yet. >> >> Fixes: e38bc23454ef763deb4405ebdee6a1081aa00bc8 >> Signed-off-by: Fam Zheng <famz@redhat.com> >> --- >> block/iscsi.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> > If lbpme is 0 we run into the same error. And this is even more likely > than an unaligned request. In fact, my byte-based series adds an assertion that unaligned requests aren't possible. > > I think the right patch is to move the init of iTask up again where it was: I had to rebase v7 of my byte-based series on top of the late iTask initialization; moving it back to early initialization makes sense. > > > diff --git a/block/iscsi.c b/block/iscsi.c > index 5c0a9e5..6a1c537 100644 > --- a/block/iscsi.c > +++ b/block/iscsi.c > @@ -658,6 +658,8 @@ static int64_t coroutine_fn > iscsi_co_get_block_status(BlockDriverState *bs, > uint64_t lba; > int64_t ret; > > + iscsi_co_init_iscsitask(iscsilun, &iTask); > + > if (!is_sector_request_lun_aligned(sector_num, nb_sectors, > iscsilun)) { > ret = -EINVAL; > goto out; > @@ -675,7 +677,6 @@ static int64_t coroutine_fn > iscsi_co_get_block_status(BlockDriverState *bs, > > lba = sector_qemu2lun(sector_num, iscsilun); > > - iscsi_co_init_iscsitask(iscsilun, &iTask); > qemu_mutex_lock(&iscsilun->mutex); > retry: > if (iscsi_get_lba_status_task(iscsilun->iscsi, iscsilun->lun, If you resubmit this as a formal patch, you can add: Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/block/iscsi.c b/block/iscsi.c index 5c0a9e5..6a1c537 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -658,6 +658,8 @@ static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs, uint64_t lba; int64_t ret; + iscsi_co_init_iscsitask(iscsilun, &iTask); + if (!is_sector_request_lun_aligned(sector_num, nb_sectors, iscsilun)) { ret = -EINVAL; goto out; @@ -675,7 +677,6 @@ static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs, lba = sector_qemu2lun(sector_num, iscsilun); - iscsi_co_init_iscsitask(iscsilun, &iTask); qemu_mutex_lock(&iscsilun->mutex); retry: if (iscsi_get_lba_status_task(iscsilun->iscsi, iscsilun->lun,