scsi: add a started field to SCSIDiskReq
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7f64f8e2c3
commit
a0e66a699e
|
@ -55,6 +55,7 @@ typedef struct SCSIDiskReq {
|
||||||
uint64_t sector;
|
uint64_t sector;
|
||||||
uint32_t sector_count;
|
uint32_t sector_count;
|
||||||
uint32_t buflen;
|
uint32_t buflen;
|
||||||
|
bool started;
|
||||||
struct iovec iov;
|
struct iovec iov;
|
||||||
QEMUIOVector qiov;
|
QEMUIOVector qiov;
|
||||||
BlockAcctCookie acct;
|
BlockAcctCookie acct;
|
||||||
|
@ -287,6 +288,7 @@ static void scsi_read_data(SCSIRequest *req)
|
||||||
if (r->sector_count == (uint32_t)-1) {
|
if (r->sector_count == (uint32_t)-1) {
|
||||||
DPRINTF("Read buf_len=%zd\n", r->iov.iov_len);
|
DPRINTF("Read buf_len=%zd\n", r->iov.iov_len);
|
||||||
r->sector_count = 0;
|
r->sector_count = 0;
|
||||||
|
r->started = true;
|
||||||
scsi_req_data(&r->req, r->iov.iov_len);
|
scsi_req_data(&r->req, r->iov.iov_len);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -313,6 +315,7 @@ static void scsi_read_data(SCSIRequest *req)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r->started = true;
|
||||||
if (r->req.sg) {
|
if (r->req.sg) {
|
||||||
dma_acct_start(s->qdev.conf.bs, &r->acct, r->req.sg, BDRV_ACCT_READ);
|
dma_acct_start(s->qdev.conf.bs, &r->acct, r->req.sg, BDRV_ACCT_READ);
|
||||||
r->req.resid -= r->req.sg->size;
|
r->req.resid -= r->req.sg->size;
|
||||||
|
@ -425,6 +428,7 @@ static void scsi_write_data(SCSIRequest *req)
|
||||||
|
|
||||||
if (!r->req.sg && !r->qiov.size) {
|
if (!r->req.sg && !r->qiov.size) {
|
||||||
/* Called for the first time. Ask the driver to send us more data. */
|
/* Called for the first time. Ask the driver to send us more data. */
|
||||||
|
r->started = true;
|
||||||
scsi_write_complete(r, 0);
|
scsi_write_complete(r, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue