[dm-devel] bio's bi_size bug also be founded at dm-stripe.c and dm-snap.c (resend in correct charset)

Kevin Corry kevcorry at us.ibm.com
Wed Jun 29 11:30:57 UTC 2005


Hi Zhao,

On Wed June 29 2005 5:10 am, Zhao Qian wrote:
> As i had written here before, sometimes bio which dispatched to the dm's
> target, it's bi_size could exceed region size in dm-mirror.c, i also found
> similar problem in dm-stripe.c and dm-snap.c,

Have you specifically seen this problem happen during testing?

> in such situation, bio's 
> bi_size could exceed strip target's chunk size and snap target's chunk
> size, but in current code, we never care about this. so in strip target we
> could read/write bad position after stripe_map() function, and cause same
> effect in dm-snap.c.

I'm quite certain there is code in dm.c to prevent bio's from spanning the 
internal boundaries in the mirror, snapshot, and stripe targets. Have you 
read through the code starting in dm.c::dm_request()? The targets specify 
where their internal boundaries are, and the core driver is responsible for 
splitting up bio's so the targets never get a request that span those 
boundaries.

> I think such bugs are very dangerous then kernel panic or cracsh becasue it
> may destroy your data in silence. we'd better to annonuce our linux users
> don't use thus dm-targets before we correct it.

If you've seen a case of actual corruption due to this, please let us know and 
we'll investigate to see if something accidentally has been broken. But as I 
mentioned above, I don't think this should really be a problem.

-- 
Kevin Corry
kevcorry at us.ibm.com
http://www.ibm.com/linux/
http://evms.sourceforge.net/




More information about the dm-devel mailing list