[dm-devel] [RFC, PATCH] remove signal handling from dm-io.c, sync_io()

Dave Olien dmo at osdl.org
Fri Jun 11 02:36:34 UTC 2004


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.




More information about the dm-devel mailing list