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