On Thu, Jun 10, 2004 at 09:24:01PM -0500, Kevin Corry wrote: > > Now I'm not sure which BUG() call you're referring to. The sync_io() and > async_io() routines both eventually go through the same common code, > dispatch_io(). I was assuming you were referring to the BUG() statement in > bvec_index(), called from bio_set_alloc(), called from dispatch_io(). You're right again. The BUG() in sync_io() was only for READs. That was the one I was referring to. I agree with making that an error case, as you did in your patch. How about making async_io() also fail for READS to multiple regions.... just for symmetry? Sorry for any confusion. I'm guilty of typing before looking carefully. > > > I'll put some thought into NOT using the bio_vec array to store > > the region number. > > I'll definitely agree that it would be nice to find a better way to store the > region number than allocating two extra bvecs. That is definitely why > snapshot chunks cannot go up to 1024k. I recall tracking this down when you > first reported the snapshot chunk-size problem a while back. Actually, ONE extra bvec is for storing the region number. The code adds an ADDITONAL bvec I think because of the way it's handling offsets into pages. I'm thinking of at re-writing do_region(), patterning it after the code in __bio_map_user(). I'm going to be out a lot tomorrow, so I'll probably be working on this some over the week end. Maybe I'll have something for review by Monday.