summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2002-09-17 21:03:47 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-09-17 21:03:47 -0700
commit8e4f42552d1af41ddda1bd38d2af0ce5dd702feb (patch)
tree7877e7987ef5cf4a967d0819d549a7dc8caee0f0
parentfad5529effc42bd4944ad6513c748fe056d04e42 (diff)
[PATCH] umem and DAC960 bio_endio()
update DAC960 and umem to new bio_endio() completions
-rw-r--r--drivers/block/DAC960.c4
-rw-r--r--drivers/block/umem.c11
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;