diff options
| author | Jens Axboe <axboe@suse.de> | 2002-09-17 21:03:47 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-09-17 21:03:47 -0700 |
| commit | 8e4f42552d1af41ddda1bd38d2af0ce5dd702feb (patch) | |
| tree | 7877e7987ef5cf4a967d0819d549a7dc8caee0f0 | |
| parent | fad5529effc42bd4944ad6513c748fe056d04e42 (diff) | |
[PATCH] umem and DAC960 bio_endio()
update DAC960 and umem to new bio_endio() completions
| -rw-r--r-- | drivers/block/DAC960.c | 4 | ||||
| -rw-r--r-- | drivers/block/umem.c | 11 |
2 files changed, 9 insertions, 6 deletions
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index 989f13e46e8f..5b80e71ae5f7 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -2909,10 +2909,8 @@ static void DAC960_RequestFunction(RequestQueue_T *RequestQueue) static inline void DAC960_ProcessCompletedBuffer(BufferHeader_T *BufferHeader, boolean SuccessfulIO) { - if (SuccessfulIO) - set_bit(BIO_UPTODATE, &BufferHeader->bi_flags); + bio_endio(BufferHeader, BufferHeader->bi_size, SuccessfulIO ? 0 : -EIO); blk_finished_io(bio_sectors(BufferHeader)); - BufferHeader->bi_end_io(BufferHeader); } static inline int DAC960_PartitionByCommand(DAC960_Command_T *Command) diff --git a/drivers/block/umem.c b/drivers/block/umem.c index b714494b67d1..ea9a3b15d358 100644 --- a/drivers/block/umem.c +++ b/drivers/block/umem.c @@ -544,9 +544,16 @@ static void process_page(unsigned long data) while(return_bio) { struct bio *bio = return_bio; + int bytes = bio->bi_size; + return_bio = bio->bi_next; bio->bi_next = NULL; - bio->bi_end_io(bio); + /* should use bio_endio(), however already cleared + * BIO_UPTODATE. so set bio->bi_size = 0 manually to indicate + * completely done + */ + bio->bi_size = 0; + bio->bi_end_io(bio, bytes, 0); } } @@ -560,8 +567,6 @@ static int mm_make_request(request_queue_t *q, struct bio *bio) struct cardinfo *card = q->queuedata; PRINTK("mm_make_request %ld %d\n", bh->b_rsector, bh->b_size); - /* set uptodate now, and clear it if there are any errors */ - set_bit(BIO_UPTODATE, &bio->bi_flags); bio->bi_phys_segments = bio->bi_idx; /* count of completed segments*/ spin_lock_bh(&card->lock); *card->biotail = bio; |
