From: Mark Haverkamp This fixes a problem similar to the patch I submitted on 11/20 http://marc.theaimsgroup.com/?l=linux-kernel&m=106936439707962&w=2 In this case, though, the result is an: "Incorrect number of segments after building list" message. The macro __BVEC_START assumes a bi_idx of zero when the dm code can submit a bio with a non-zero bi_idx. The code has been tested on an 8 way / 8gb OSDL STP machine with a 197G lvm volume running dbt2 test. 25-akpm/include/linux/bio.h | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN include/linux/bio.h~__BVEC_START-fix include/linux/bio.h --- 25/include/linux/bio.h~__BVEC_START-fix Mon Dec 22 14:31:22 2003 +++ 25-akpm/include/linux/bio.h Mon Dec 22 14:31:22 2003 @@ -162,7 +162,7 @@ struct bio { */ #define __BVEC_END(bio) bio_iovec_idx((bio), (bio)->bi_vcnt - 1) -#define __BVEC_START(bio) bio_iovec_idx((bio), 0) +#define __BVEC_START(bio) bio_iovec_idx((bio), (bio)->bi_idx) #define BIOVEC_PHYS_MERGEABLE(vec1, vec2) \ ((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2))) #define BIOVEC_VIRT_MERGEABLE(vec1, vec2) \ _