diff options
author | Borislav Petkov <petkovbb@gmail.com> | 2009-05-01 15:21:02 -0400 |
---|---|---|
committer | Borislav Petkov <petkovbb@gmail.com> | 2009-05-15 00:44:02 -0400 |
commit | 077e6dba20e74a455a0452379d2a965c7e1b01ad (patch) | |
tree | 66b4a755d6e5941578d5a14b778b0734273343c5 /drivers/ide/ide-tape.c | |
parent | dfb7e621fa12c0579e88560ab176c5768f9e0bfb (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.c | 12 |
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; |