[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