[PATCH] Keep the bio end_io parts inside of bio.c for blk_rq_map_kern()
authorJens Axboe <axboe@suse.de>
Mon, 20 Jun 2005 12:05:27 +0000 (14:05 +0200)
committerJens Axboe <axboe@suse.de>
Mon, 20 Jun 2005 12:05:27 +0000 (14:05 +0200)
Signed-off-by: Jens Axboe <axboe@suse.de>
drivers/block/ll_rw_blk.c
fs/bio.c

index e30a3c9..1471aca 100644 (file)
@@ -2177,16 +2177,6 @@ int blk_rq_unmap_user(struct request *rq, struct bio *bio, unsigned int ulen)
 
 EXPORT_SYMBOL(blk_rq_unmap_user);
 
-static int blk_rq_map_kern_endio(struct bio *bio, unsigned int bytes_done,
-                                int error)
-{
-       if (bio->bi_size)
-               return 1;
-
-       bio_put(bio);
-       return 0;
-}
-
 /**
  * blk_rq_map_kern - map kernel data to a request, for REQ_BLOCK_PC usage
  * @q:         request queue where request should be inserted
@@ -2213,7 +2203,6 @@ struct request *blk_rq_map_kern(request_queue_t *q, int rw, void *kbuf,
        if (!IS_ERR(bio)) {
                if (rw)
                        bio->bi_rw |= (1 << BIO_RW);
-               bio->bi_end_io = blk_rq_map_kern_endio;
 
                rq->bio = rq->biotail = bio;
                blk_rq_bio_prep(q, rq, bio);
index 707b9af..c0d9140 100644 (file)
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -701,6 +701,16 @@ void bio_unmap_user(struct bio *bio)
        bio_put(bio);
 }
 
+static int bio_map_kern_endio(struct bio *bio, unsigned int bytes_done, int err)
+{
+       if (bio->bi_size)
+               return 1;
+
+       bio_put(bio);
+       return 0;
+}
+
+
 static struct bio *__bio_map_kern(request_queue_t *q, void *data,
                                  unsigned int len, unsigned int gfp_mask)
 {
@@ -734,6 +744,7 @@ static struct bio *__bio_map_kern(request_queue_t *q, void *data,
                offset = 0;
        }
 
+       bio->bi_end_io = bio_map_kern_endio;
        return bio;
 }