From: Mark Haverkamp <markh@osdl.org>

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)	\

_