|
@@ -266,7 +266,7 @@ static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
|
|
hdr->info = 0;
|
|
hdr->info = 0;
|
|
if (hdr->masked_status || hdr->host_status || hdr->driver_status)
|
|
if (hdr->masked_status || hdr->host_status || hdr->driver_status)
|
|
hdr->info |= SG_INFO_CHECK;
|
|
hdr->info |= SG_INFO_CHECK;
|
|
- hdr->resid = rq->data_len;
|
|
|
|
|
|
+ hdr->resid = rq->raw_data_len;
|
|
hdr->sb_len_wr = 0;
|
|
hdr->sb_len_wr = 0;
|
|
|
|
|
|
if (rq->sense_len && hdr->sbp) {
|
|
if (rq->sense_len && hdr->sbp) {
|
|
@@ -528,6 +528,7 @@ static int __blk_send_generic(struct request_queue *q, struct gendisk *bd_disk,
|
|
rq = blk_get_request(q, WRITE, __GFP_WAIT);
|
|
rq = blk_get_request(q, WRITE, __GFP_WAIT);
|
|
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
|
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
|
rq->data = NULL;
|
|
rq->data = NULL;
|
|
|
|
+ rq->raw_data_len = 0;
|
|
rq->data_len = 0;
|
|
rq->data_len = 0;
|
|
rq->timeout = BLK_DEFAULT_SG_TIMEOUT;
|
|
rq->timeout = BLK_DEFAULT_SG_TIMEOUT;
|
|
memset(rq->cmd, 0, sizeof(rq->cmd));
|
|
memset(rq->cmd, 0, sizeof(rq->cmd));
|