[PATCH] ide: preserve errors for failed requests

To preserve the ->errors values for requests that failed, use the normal
completion path for that.

Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Jens Axboe and committed by
Linus Torvalds
4ff57935 c8d52465

+6 -5
+6 -5
drivers/ide/ide-io.c
··· 60 60 request_queue_t *q = rq->q; 61 61 62 62 add_disk_randomness(rq->rq_disk); 63 - end_that_request_chunk(rq, rq->errors, rq->data_len); 63 + end_that_request_chunk(rq, 1, rq->data_len); 64 64 65 65 spin_lock_irq(q->queue_lock); 66 - end_that_request_last(rq, rq->errors); 66 + end_that_request_last(rq, 1); 67 67 spin_unlock_irq(q->queue_lock); 68 68 } 69 69 ··· 96 96 97 97 /* 98 98 * For partial completions (or non fs/pc requests), use the regular 99 - * direct completion path. 99 + * direct completion path. Same thing for requests that failed, to 100 + * preserve the ->errors value we use the normal completion path 101 + * for those 100 102 */ 101 103 nbytes = nr_sectors << 9; 102 - if (rq_all_done(rq, nbytes)) { 103 - rq->errors = uptodate; 104 + if (!rq->errors && rq_all_done(rq, nbytes)) { 104 105 rq->data_len = nbytes; 105 106 blkdev_dequeue_request(rq); 106 107 HWGROUP(drive)->rq = NULL;