Commit 55262c2d authored by Jens Axboe's avatar Jens Axboe

[PATCH] Fix scsi_ioctl command direction bits

With the dynamic request allocation, we get the direction bits set for
us. This breaks the scsi_ioctl stuff, since we always pass in WRITE
there. So actually pass in the right direction instead.
parent 31ab234b
...@@ -212,7 +212,7 @@ static int sg_io(request_queue_t *q, struct block_device *bdev, ...@@ -212,7 +212,7 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
} }
} }
rq = blk_get_request(q, WRITE, __GFP_WAIT); rq = blk_get_request(q, writing ? WRITE : READ, __GFP_WAIT);
/* /*
* fill in request structure * fill in request structure
...@@ -227,8 +227,6 @@ static int sg_io(request_queue_t *q, struct block_device *bdev, ...@@ -227,8 +227,6 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
rq->sense_len = 0; rq->sense_len = 0;
rq->flags |= REQ_BLOCK_PC; rq->flags |= REQ_BLOCK_PC;
if (writing)
rq->flags |= REQ_RW;
rq->hard_nr_sectors = rq->nr_sectors = nr_sectors; rq->hard_nr_sectors = rq->nr_sectors = nr_sectors;
rq->hard_cur_sectors = rq->current_nr_sectors = nr_sectors; rq->hard_cur_sectors = rq->current_nr_sectors = nr_sectors;
...@@ -329,7 +327,7 @@ static int sg_scsi_ioctl(request_queue_t *q, struct block_device *bdev, ...@@ -329,7 +327,7 @@ static int sg_scsi_ioctl(request_queue_t *q, struct block_device *bdev,
memset(buffer, 0, bytes); memset(buffer, 0, bytes);
} }
rq = blk_get_request(q, WRITE, __GFP_WAIT); rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_WAIT);
cmdlen = COMMAND_SIZE(opcode); cmdlen = COMMAND_SIZE(opcode);
...@@ -373,8 +371,6 @@ static int sg_scsi_ioctl(request_queue_t *q, struct block_device *bdev, ...@@ -373,8 +371,6 @@ static int sg_scsi_ioctl(request_queue_t *q, struct block_device *bdev,
rq->data = buffer; rq->data = buffer;
rq->data_len = bytes; rq->data_len = bytes;
rq->flags |= REQ_BLOCK_PC; rq->flags |= REQ_BLOCK_PC;
if (in_len)
rq->flags |= REQ_RW;
blk_do_rq(q, bdev, rq); blk_do_rq(q, bdev, rq);
err = rq->errors & 0xff; /* only 8 bit SCSI status */ err = rq->errors & 0xff; /* only 8 bit SCSI status */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment