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

Dave Olien dmo at osdl.org
Fri Jun 11 00:20:18 UTC 2004


I suggest either fixing the multi-region functionality, or
removing it.  I can think of schemes either way.

One thing I want to remove if we keep the multi-region case, is to
NOT use the bio_vec array to store region number.  This is what
causes problems for snapshot volumes when specifing a chunk
size of 1024k.

Notice in do_region(), the line

	num_bvecs = (remaining / (PAGE_SIZE >> 9)) + 2;

The addition of 2 causes the following bio_set_alloc()
to hit its BUG() statement.

I think it is also what causes dm-io to maintain it's own
pools of bio_vec and bio structures, instead of using the
kernel-wide pools.


On Thu, Jun 10, 2004 at 04:28:01PM -0700, Dave Olien wrote:
> 
> Sorry, I've been in a meeting for the last hour...
> 
> I agree on both your counts.
> 
> I've been wondering about the multiple region stuff.  I don't
> think these routines are ever used to do multiple region IO.
> Is there any plan to use them that way?  I could see maybe with
> multi-way mirroring, there might be some use. But I don't think
> that's done yet.
> 
> the do_region() function in particular seems broken to me.
> 
> If we eliminate the multi-region support entirely, this code can
> all be simplified a lot.  The allocation and initialization could
> of bio's and bvecs could just use the defined code in fs/bio.c
> 
> How about I write up this file to eliminate multi-region IO?



More information about the dm-devel mailing list