|
@@ -577,7 +577,7 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
|
|
|
struct request *rq = hwif->rq;
|
|
|
ide_expiry_t *expiry = NULL;
|
|
|
int dma_error = 0, dma, thislen, uptodate = 0;
|
|
|
- int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc = 0, nsectors;
|
|
|
+ int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc = 0;
|
|
|
int sense = blk_sense_request(rq);
|
|
|
unsigned int timeout;
|
|
|
u16 len;
|
|
@@ -707,9 +707,7 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
|
|
|
|
|
|
out_end:
|
|
|
if (blk_pc_request(rq) && rc == 0) {
|
|
|
- if (blk_end_request(rq, 0, rq->data_len))
|
|
|
- BUG();
|
|
|
-
|
|
|
+ blk_end_request_all(rq, 0);
|
|
|
hwif->rq = NULL;
|
|
|
} else {
|
|
|
if (sense && uptodate)
|
|
@@ -727,22 +725,14 @@ out_end:
|
|
|
ide_cd_error_cmd(drive, cmd);
|
|
|
|
|
|
/* make sure it's fully ended */
|
|
|
- if (blk_pc_request(rq))
|
|
|
- nsectors = (rq->data_len + 511) >> 9;
|
|
|
- else
|
|
|
- nsectors = blk_rq_sectors(rq);
|
|
|
-
|
|
|
- if (nsectors == 0)
|
|
|
- nsectors = 1;
|
|
|
-
|
|
|
if (blk_fs_request(rq) == 0) {
|
|
|
- rq->resid_len = rq->data_len -
|
|
|
+ rq->resid_len = blk_rq_bytes(rq) -
|
|
|
(cmd->nbytes - cmd->nleft);
|
|
|
if (uptodate == 0 && (cmd->tf_flags & IDE_TFLAG_WRITE))
|
|
|
rq->resid_len += cmd->last_xfer_len;
|
|
|
}
|
|
|
|
|
|
- ide_complete_rq(drive, uptodate ? 0 : -EIO, nsectors << 9);
|
|
|
+ ide_complete_rq(drive, uptodate ? 0 : -EIO, blk_rq_bytes(rq));
|
|
|
|
|
|
if (sense && rc == 2)
|
|
|
ide_error(drive, "request sense failure", stat);
|
|
@@ -819,7 +809,7 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
|
|
|
*/
|
|
|
alignment = queue_dma_alignment(q) | q->dma_pad_mask;
|
|
|
if ((unsigned long)buf & alignment
|
|
|
- || rq->data_len & q->dma_pad_mask
|
|
|
+ || blk_rq_bytes(rq) & q->dma_pad_mask
|
|
|
|| object_is_on_stack(buf))
|
|
|
drive->dma = 0;
|
|
|
}
|
|
@@ -867,9 +857,8 @@ static ide_startstop_t ide_cd_do_request(ide_drive_t *drive, struct request *rq,
|
|
|
|
|
|
cmd.rq = rq;
|
|
|
|
|
|
- if (blk_fs_request(rq) || rq->data_len) {
|
|
|
- ide_init_sg_cmd(&cmd, blk_fs_request(rq) ?
|
|
|
- (blk_rq_sectors(rq) << 9) : rq->data_len);
|
|
|
+ if (blk_fs_request(rq) || blk_rq_bytes(rq)) {
|
|
|
+ ide_init_sg_cmd(&cmd, blk_rq_bytes(rq));
|
|
|
ide_map_sg(drive, &cmd);
|
|
|
}
|
|
|
|