|
@@ -305,53 +305,21 @@ static void blkvsc_init_rw(struct blkvsc_request *blkvsc_req)
|
|
|
|
|
|
blkvsc_req->cmd_len = 16;
|
|
|
|
|
|
- if (blkvsc_req->sector_start > 0xffffffff) {
|
|
|
- if (rq_data_dir(blkvsc_req->req)) {
|
|
|
- blkvsc_req->write = 1;
|
|
|
- blkvsc_req->cmnd[0] = WRITE_16;
|
|
|
- } else {
|
|
|
- blkvsc_req->write = 0;
|
|
|
- blkvsc_req->cmnd[0] = READ_16;
|
|
|
- }
|
|
|
-
|
|
|
- blkvsc_req->cmnd[1] |=
|
|
|
- (blkvsc_req->req->cmd_flags & REQ_FUA) ? 0x8 : 0;
|
|
|
-
|
|
|
- *(unsigned long long *)&blkvsc_req->cmnd[2] =
|
|
|
- cpu_to_be64(blkvsc_req->sector_start);
|
|
|
- *(unsigned int *)&blkvsc_req->cmnd[10] =
|
|
|
- cpu_to_be32(blkvsc_req->sector_count);
|
|
|
- } else if ((blkvsc_req->sector_count > 0xff) ||
|
|
|
- (blkvsc_req->sector_start > 0x1fffff)) {
|
|
|
- if (rq_data_dir(blkvsc_req->req)) {
|
|
|
- blkvsc_req->write = 1;
|
|
|
- blkvsc_req->cmnd[0] = WRITE_10;
|
|
|
- } else {
|
|
|
- blkvsc_req->write = 0;
|
|
|
- blkvsc_req->cmnd[0] = READ_10;
|
|
|
- }
|
|
|
-
|
|
|
- blkvsc_req->cmnd[1] |=
|
|
|
- (blkvsc_req->req->cmd_flags & REQ_FUA) ? 0x8 : 0;
|
|
|
-
|
|
|
- *(unsigned int *)&blkvsc_req->cmnd[2] =
|
|
|
- cpu_to_be32(blkvsc_req->sector_start);
|
|
|
- *(unsigned short *)&blkvsc_req->cmnd[7] =
|
|
|
- cpu_to_be16(blkvsc_req->sector_count);
|
|
|
+ if (rq_data_dir(blkvsc_req->req)) {
|
|
|
+ blkvsc_req->write = 1;
|
|
|
+ blkvsc_req->cmnd[0] = WRITE_16;
|
|
|
} else {
|
|
|
- if (rq_data_dir(blkvsc_req->req)) {
|
|
|
- blkvsc_req->write = 1;
|
|
|
- blkvsc_req->cmnd[0] = WRITE_6;
|
|
|
- } else {
|
|
|
- blkvsc_req->write = 0;
|
|
|
- blkvsc_req->cmnd[0] = READ_6;
|
|
|
- }
|
|
|
-
|
|
|
- *(unsigned int *)&blkvsc_req->cmnd[1] =
|
|
|
- cpu_to_be32(blkvsc_req->sector_start) >> 8;
|
|
|
- blkvsc_req->cmnd[1] &= 0x1f;
|
|
|
- blkvsc_req->cmnd[4] = (unsigned char)blkvsc_req->sector_count;
|
|
|
+ blkvsc_req->write = 0;
|
|
|
+ blkvsc_req->cmnd[0] = READ_16;
|
|
|
}
|
|
|
+
|
|
|
+ blkvsc_req->cmnd[1] |=
|
|
|
+ (blkvsc_req->req->cmd_flags & REQ_FUA) ? 0x8 : 0;
|
|
|
+
|
|
|
+ *(unsigned long long *)&blkvsc_req->cmnd[2] =
|
|
|
+ cpu_to_be64(blkvsc_req->sector_start);
|
|
|
+ *(unsigned int *)&blkvsc_req->cmnd[10] =
|
|
|
+ cpu_to_be32(blkvsc_req->sector_count);
|
|
|
}
|
|
|
|
|
|
|