14/19

From: Joe Thornber (joe@fib011235813.fsnet.co.uk)
Date: Mon Dec 16 2002 - 05:15:39 EST


Some fields in the duplicated bio weren't being set up properly in
__split_page(). [Kevin Corry]
--- diff/drivers/md/dm.c 2002-12-16 09:41:21.000000000 +0000
+++ source/drivers/md/dm.c 2002-12-16 09:41:25.000000000 +0000
@@ -337,7 +337,7 @@
 {
         struct dm_target *ti = dm_table_find_target(ci->md->map, ci->sector);
         struct bio *clone, *bio = ci->bio;
- struct bio_vec *bv = bio->bi_io_vec + (bio->bi_vcnt - 1);
+ struct bio_vec *bv = bio->bi_io_vec + ci->idx;
 
         DMWARN("splitting page");
 
@@ -349,11 +349,13 @@
 
         clone->bi_sector = ci->sector;
         clone->bi_bdev = bio->bi_bdev;
- clone->bi_flags = bio->bi_flags | (1 << BIO_SEG_VALID);
         clone->bi_rw = bio->bi_rw;
+ clone->bi_vcnt = 1;
         clone->bi_size = len << SECTOR_SHIFT;
         clone->bi_end_io = clone_endio;
         clone->bi_private = ci->io;
+ clone->bi_io_vec->bv_offset = bv->bv_len - clone->bi_size;
+ clone->bi_io_vec->bv_len = clone->bi_size;
 
         ci->sector += len;
         ci->sector_count -= len;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Dec 23 2002 - 22:00:13 EST