Revision 94d3f98a hw/scsi-bus.c
b/hw/scsi-bus.c | ||
---|---|---|
549 | 549 |
scsi_req_unref(req); |
550 | 550 |
} |
551 | 551 |
|
552 |
void scsi_req_cancel(SCSIRequest *req) |
|
553 |
{ |
|
554 |
if (req->dev && req->dev->info->cancel_io) { |
|
555 |
req->dev->info->cancel_io(req); |
|
556 |
} |
|
557 |
scsi_req_ref(req); |
|
558 |
scsi_req_dequeue(req); |
|
559 |
if (req->bus->ops->cancel) { |
|
560 |
req->bus->ops->cancel(req); |
|
561 |
} |
|
562 |
scsi_req_unref(req); |
|
563 |
} |
|
564 |
|
|
552 | 565 |
void scsi_req_abort(SCSIRequest *req, int status) |
553 | 566 |
{ |
554 | 567 |
req->status = status; |
... | ... | |
564 | 577 |
|
565 | 578 |
while (!QTAILQ_EMPTY(&sdev->requests)) { |
566 | 579 |
req = QTAILQ_FIRST(&sdev->requests); |
567 |
sdev->info->cancel_io(req); |
|
568 |
scsi_req_dequeue(req); |
|
569 |
scsi_req_unref(req); |
|
580 |
scsi_req_cancel(req); |
|
570 | 581 |
} |
571 | 582 |
} |
572 | 583 |
|
Also available in: Unified diff