Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 249107
b: refs/heads/master
c: b7be09c
h: refs/heads/master
i:
  249105: f1422ce
  249103: f3abc6e
v: v3
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Apr 25, 2011
1 parent 2540839 commit b5bfea9
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 59 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 648dc59899073d4d23ba346c0281dc96792725b3
refs/heads/master: b7be09cc9188d74d290fc5512575340010cfd249
117 changes: 59 additions & 58 deletions trunk/drivers/staging/hv/blkvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,65 @@ static int blkvsc_getgeo(struct block_device *bd, struct hd_geometry *hg)
return 0;
}


static void blkvsc_init_rw(struct blkvsc_request *blkvsc_req)
{
/* ASSERT(blkvsc_req->req); */
/* ASSERT(blkvsc_req->sector_count <=
(MAX_MULTIPAGE_BUFFER_COUNT*8)); */

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);
} 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;
}
}


/* Static decl */
static int blkvsc_probe(struct device *dev);
static int blkvsc_remove(struct device *device);
Expand All @@ -361,7 +420,6 @@ static void blkvsc_request(struct request_queue *queue);
static void blkvsc_request_completion(struct hv_storvsc_request *request);
static int blkvsc_do_request(struct block_device_context *blkdev,
struct request *req);
static void blkvsc_init_rw(struct blkvsc_request *blkvsc_req);
static void blkvsc_cmd_completion(struct hv_storvsc_request *request);
static int blkvsc_do_inquiry(struct block_device_context *blkdev);
static int blkvsc_do_read_capacity(struct block_device_context *blkdev);
Expand Down Expand Up @@ -991,63 +1049,6 @@ static int blkvsc_remove(struct device *device)
return ret;
}

static void blkvsc_init_rw(struct blkvsc_request *blkvsc_req)
{
/* ASSERT(blkvsc_req->req); */
/* ASSERT(blkvsc_req->sector_count <= (MAX_MULTIPAGE_BUFFER_COUNT*8)); */

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);
} 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;
}
}


/*
* We break the request into 1 or more blkvsc_requests and submit
* them. If we can't submit them all, we put them on the
Expand Down

0 comments on commit b5bfea9

Please sign in to comment.