scsi-disk: fix rerror/werror=ignore

rerror=ignore was returning true from scsi_handle_rw_error but the callers were not
calling scsi_req_complete when rerror=ignore returns true (this is the correct thing
to do when true is returned after executing a passthrough command).  Fix this by
calling it in scsi_handle_rw_error.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2018-10-13 11:52:34 +02:00
parent e6aa5ba4ac
commit 40dce4ee61

View File

@ -473,10 +473,15 @@ static bool scsi_handle_rw_error(SCSIDiskReq *r, int error, bool acct_failed)
} }
blk_error_action(s->qdev.conf.blk, action, is_read, error); blk_error_action(s->qdev.conf.blk, action, is_read, error);
if (action == BLOCK_ERROR_ACTION_IGNORE) {
scsi_req_complete(&r->req, 0);
return true;
}
if (action == BLOCK_ERROR_ACTION_STOP) { if (action == BLOCK_ERROR_ACTION_STOP) {
scsi_req_retry(&r->req); scsi_req_retry(&r->req);
} }
return action != BLOCK_ERROR_ACTION_IGNORE; return false;
} }
static void scsi_write_complete_noio(SCSIDiskReq *r, int ret) static void scsi_write_complete_noio(SCSIDiskReq *r, int ret)