scsi: associate bio write hint with WRITE CDB
PATCH 1/1 scsi: associate bio write hint with WRITE CDB
In SPC-3, WRITE(10)/(16) support grouping function. Let's associate bio write hint with group number for enabling StreamID or Turbo Write feature.
Bug 120900381
Change-Id I565c8e0c1d10e17a23e73f2a02c1adbd198b04b3
Signed-off-by Randall Huang <[email protected]>
--- drivers/scsi/sd.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
drivers/scsi/sd.c +10 -2
@@ -1201,7 +1201,11 @@ static int sd_setup_read_write_cmnd(struct scsi_cmnd *SCpnt) SCpnt->cmnd[11 ] = (unsigned char ) (this_count >>16 ) &0xff ; SCpnt->cmnd[12 ] = (unsigned char ) (this_count >>8 ) &0xff ; SCpnt->cmnd[13 ] = (unsigned char ) this_count &0xff ; - SCpnt->cmnd[14 ] = SCpnt->cmnd[15 ] =0 ; +if (rq_data_dir (rq) ==WRITE ) { + SCpnt->cmnd[14 ] = rq->bio->bi_write_hint &0x3f ; + }else + SCpnt->cmnd[14 ] =0 ; + SCpnt->cmnd[15 ] =0 ; }else if ((this_count >0xff ) || (block >0x1fffff ) ||scsi_device_protection (SCpnt->device) || SCpnt->device->use_10_for_rw) {
@@ -1211,9 +1215,13 @@ static int sd_setup_read_write_cmnd(struct scsi_cmnd *SCpnt) SCpnt->cmnd[3 ] = (unsigned char ) (block >>16 ) &0xff ; SCpnt->cmnd[4 ] = (unsigned char ) (block >>8 ) &0xff ; SCpnt->cmnd[5 ] = (unsigned char ) block &0xff ; - SCpnt->cmnd[6 ] = SCpnt->cmnd[9 ] =0 ; +if (rq_data_dir (rq) ==WRITE ) { + SCpnt->cmnd[6 ] = rq->bio->bi_write_hint &0x1f ; + }else + SCpnt->cmnd[6 ] =0 ; SCpnt->cmnd[7 ] = (unsigned char ) (this_count >>8 ) &0xff ; SCpnt->cmnd[8 ] = (unsigned char ) this_count &0xff ; + SCpnt->cmnd[9 ] =0 ; }else {if (unlikely (rq->cmd_flags &REQ_FUA )) {/*
Signature · 1 line
2.20.1.415.g653613c723-goog