qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

iscsi: handle check condition status in retry loop

The handling of check condition was incorrect because
we would only do it after retries exceed maximum.

Fixes: 8c460269aa ("iscsi: base all handling of check condition on scsi_sense_to_errno")
Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
Message-Id: <20200701105444.3226-1-xieyongji@bytedance.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by

Xie Yongji and committed by
Paolo Bonzini
dd3b0020 1b38750c

+10 -10
+10 -10
block/iscsi.c
··· 266 266 timer_mod(&iTask->retry_timer, 267 267 qemu_clock_get_ms(QEMU_CLOCK_REALTIME) + retry_time); 268 268 iTask->do_retry = 1; 269 - } 270 - } else if (status == SCSI_STATUS_CHECK_CONDITION) { 271 - int error = iscsi_translate_sense(&task->sense); 272 - if (error == EAGAIN) { 273 - error_report("iSCSI CheckCondition: %s", 274 - iscsi_get_error(iscsi)); 275 - iTask->do_retry = 1; 276 - } else { 277 - iTask->err_code = -error; 278 - iTask->err_str = g_strdup(iscsi_get_error(iscsi)); 269 + } else if (status == SCSI_STATUS_CHECK_CONDITION) { 270 + int error = iscsi_translate_sense(&task->sense); 271 + if (error == EAGAIN) { 272 + error_report("iSCSI CheckCondition: %s", 273 + iscsi_get_error(iscsi)); 274 + iTask->do_retry = 1; 275 + } else { 276 + iTask->err_code = -error; 277 + iTask->err_str = g_strdup(iscsi_get_error(iscsi)); 278 + } 279 279 } 280 280 } 281 281 }