Read10/Write10 parameters

LBA is uint32_t for read/write10

Also store the lba/numblocks arguments in the task structure for read10/write10
This makes it much easier to implement a fully async "read lots/write lots"
applications.
This commit is contained in:
Ronnie Sahlberg
2011-01-23 18:34:16 +11:00
parent 7b5ff1095c
commit ec08fe7a45
4 changed files with 26 additions and 10 deletions

View File

@@ -507,7 +507,7 @@ scsi_inquiry_datain_unmarshall(struct scsi_task *task)
* READ10
*/
struct scsi_task *
scsi_cdb_read10(int lba, int xferlen, int blocksize)
scsi_cdb_read10(uint32_t lba, uint32_t xferlen, int blocksize)
{
struct scsi_task *task;
@@ -526,6 +526,9 @@ scsi_cdb_read10(int lba, int xferlen, int blocksize)
task->xfer_dir = SCSI_XFER_READ;
task->expxferlen = xferlen;
task->params.read10.lba = lba;
task->params.read10.num_blocks = xferlen/blocksize;
return task;
}
@@ -533,7 +536,7 @@ scsi_cdb_read10(int lba, int xferlen, int blocksize)
* WRITE10
*/
struct scsi_task *
scsi_cdb_write10(int lba, int xferlen, int fua, int fuanv, int blocksize)
scsi_cdb_write10(uint32_t lba, uint32_t xferlen, int fua, int fuanv, int blocksize)
{
struct scsi_task *task;
@@ -559,6 +562,9 @@ scsi_cdb_write10(int lba, int xferlen, int fua, int fuanv, int blocksize)
task->xfer_dir = SCSI_XFER_WRITE;
task->expxferlen = xferlen;
task->params.write10.lba = lba;
task->params.write10.num_blocks = xferlen/blocksize;
return task;
}