Revision ad3376cc hw/spapr_vscsi.c

b/hw/spapr_vscsi.c
448 448

  
449 449
static void vscsi_send_request_sense(VSCSIState *s, vscsi_req *req)
450 450
{
451
    SCSIDevice *sdev = req->sdev;
452 451
    uint8_t *cdb = req->iu.srp.cmd.cdb;
453 452
    int n;
454 453

  
......
469 468
    } else if (n == 0) {
470 469
        return;
471 470
    }
472
    sdev->info->read_data(req->sreq);
471
    scsi_req_continue(req->sreq);
473 472
}
474 473

  
475 474
/* Callback to indicate that the SCSI layer has completed a transfer.  */
......
508 507
                    buf[12], buf[13], buf[14], buf[15]);
509 508
            memcpy(req->sense, buf, len);
510 509
            req->senselen = len;
511
            sdev->info->read_data(sreq);
510
            scsi_req_continue(req->sreq);
512 511
        }
513 512
        return;
514 513
    }
......
552 551

  
553 552
    /* Start next chunk */
554 553
    req->data_len -= rc;
555
    if (req->writing) {
556
        sdev->info->write_data(sreq);
557
    } else {
558
        sdev->info->read_data(sreq);
559
    }
554
    scsi_req_continue(sreq);
560 555
}
561 556

  
562 557
static void vscsi_request_cancelled(SCSIRequest *sreq)
......
667 662

  
668 663
        /* Preprocess RDMA descriptors */
669 664
        vscsi_preprocess_desc(req);
670
    }
671 665

  
672
    /* Get transfer direction and initiate transfer */
673
    if (n > 0) {
674
        req->data_len = n;
675
        sdev->info->read_data(req->sreq);
676
    } else if (n < 0) {
677
        req->data_len = -n;
678
        sdev->info->write_data(req->sreq);
666
        /* Get transfer direction and initiate transfer */
667
        if (n > 0) {
668
            req->data_len = n;
669
        } else if (n < 0) {
670
            req->data_len = -n;
671
        }
672
        scsi_req_continue(req->sreq);
679 673
    }
680 674
    /* Don't touch req here, it may have been recycled already */
681 675

  

Also available in: Unified diff