aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-tape.c
diff options
context:
space:
mode:
authorBorislav Petkov <petkovbb@gmail.com>2009-05-01 15:21:02 -0400
committerBorislav Petkov <petkovbb@gmail.com>2009-05-15 00:44:02 -0400
commit077e6dba20e74a455a0452379d2a965c7e1b01ad (patch)
tree66b4a755d6e5941578d5a14b778b0734273343c5 /drivers/ide/ide-tape.c
parentdfb7e621fa12c0579e88560ab176c5768f9e0bfb (diff)
ide-atapi: switch to rq->resid_len
Now that we have rq->resid_len, use it to account partial completion amount during the lifetime of an rq, decrementing it on each successful transfer. As a result, get rid of now unused pc->xferred. While at it, remove noisy debug call in ide_prep_sense. Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Diffstat (limited to 'drivers/ide/ide-tape.c')
-rw-r--r--drivers/ide/ide-tape.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index aaeef12f80ad..c93370997972 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -301,11 +301,9 @@ static void idetape_analyze_error(ide_drive_t *drive, u8 *sense)
301 debug_log(DBG_ERR, "pc = %x, sense key = %x, asc = %x, ascq = %x\n", 301 debug_log(DBG_ERR, "pc = %x, sense key = %x, asc = %x, ascq = %x\n",
302 pc->c[0], tape->sense_key, tape->asc, tape->ascq); 302 pc->c[0], tape->sense_key, tape->asc, tape->ascq);
303 303
304 /* Correct pc->xferred by asking the tape. */ 304 /* correct remaining bytes to transfer */
305 if (pc->flags & PC_FLAG_DMA_ERROR) 305 if (pc->flags & PC_FLAG_DMA_ERROR)
306 pc->xferred = blk_rq_bytes(rq) - 306 rq->resid_len = tape->blk_size * get_unaligned_be32(&sense[3]);
307 tape->blk_size *
308 get_unaligned_be32(&sense[3]);
309 307
310 /* 308 /*
311 * If error was the result of a zero-length read or write command, 309 * If error was the result of a zero-length read or write command,
@@ -339,7 +337,7 @@ static void idetape_analyze_error(ide_drive_t *drive, u8 *sense)
339 pc->flags |= PC_FLAG_ABORT; 337 pc->flags |= PC_FLAG_ABORT;
340 } 338 }
341 if (!(pc->flags & PC_FLAG_ABORT) && 339 if (!(pc->flags & PC_FLAG_ABORT) &&
342 pc->xferred) 340 (blk_rq_bytes(rq) - rq->resid_len))
343 pc->retries = IDETAPE_MAX_PC_RETRIES + 1; 341 pc->retries = IDETAPE_MAX_PC_RETRIES + 1;
344 } 342 }
345} 343}
@@ -369,7 +367,8 @@ static int ide_tape_callback(ide_drive_t *drive, int dsc)
369 printk(KERN_ERR "ide-tape: Error in REQUEST SENSE " 367 printk(KERN_ERR "ide-tape: Error in REQUEST SENSE "
370 "itself - Aborting request!\n"); 368 "itself - Aborting request!\n");
371 } else if (pc->c[0] == READ_6 || pc->c[0] == WRITE_6) { 369 } else if (pc->c[0] == READ_6 || pc->c[0] == WRITE_6) {
372 int blocks = pc->xferred / tape->blk_size; 370 unsigned int blocks =
371 (blk_rq_bytes(rq) - rq->resid_len) / tape->blk_size;
373 372
374 tape->avg_size += blocks * tape->blk_size; 373 tape->avg_size += blocks * tape->blk_size;
375 374
@@ -381,7 +380,6 @@ static int ide_tape_callback(ide_drive_t *drive, int dsc)
381 } 380 }
382 381
383 tape->first_frame += blocks; 382 tape->first_frame += blocks;
384 rq->resid_len = blk_rq_bytes(rq) - blocks * tape->blk_size;
385 383
386 if (pc->error) { 384 if (pc->error) {
387 uptodate = 0; 385 uptodate = 0;