Skip to content

Commit

Permalink
Staging: hv: Simplify blkvsc_init_rw()
Browse files Browse the repository at this point in the history
Simplyfify blkvsc_init_rw() by using a single scsi command independent of
the start sector.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Apr 25, 2011
1 parent 3880914 commit 9bd0859
Showing 1 changed file with 13 additions and 45 deletions.
58 changes: 13 additions & 45 deletions drivers/staging/hv/blkvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}


Expand Down

0 comments on commit 9bd0859

Please sign in to comment.