This was found by code inspection. If the request is cancelled twice,
the notifier is never called on the second cancellation request,
and hence for example a TMF might never finish.
All the calls in scsi_req_cancel_async are idempotent, so the change
is safe.
Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <
1450290827-30508-2-git-send-email-pbonzini@redhat.com>
if (notifier) {
notifier_list_add(&req->cancel_notifiers, notifier);
}
- if (req->io_canceled) {
- return;
- }
scsi_req_ref(req);
scsi_req_dequeue(req);
req->io_canceled = true;