geom_uzip, panic: bio_length in mdstart_vnode()

John-Mark Gurney jmg at funkthat.com
Thu Dec 5 02:07:50 UTC 2013


Konstantin Belousov wrote this message on Wed, Dec 04, 2013 at 18:20 +0200:
> On Wed, Dec 04, 2013 at 01:59:52PM +0100, Paolo Pinto wrote:
> > Hi list!
> > 
> > My kernel is compiled with option INVARIANTS and I get a reproducible
> > kernel panic when trying to read data from a GEOM based compressed
> > memory disk:
> > 
> > Unread portion of the kernel message buffer:
> > panic: bio_length 140288
> > cpuid = 3
> > KDB: stack backtrace:
> > #0 0xffffffff80909726 at kdb_backtrace+0x66
> > #1 0xffffffff808d0fa8 at panic+0x1d8
> > #2 0xffffffff80595949 at mdstart_vnode+0x619
> 
> The issue is that geom_uzip creates bios which are larger than MAXPHYS.

Shouldn't geom_uzip be fixed to honor MAXPHYS?

> As a workaround, the following patch should be enough.  It only fires
> assert when md really uses pbuf, and since geom_uzip knows nothing
> about unmapped bio, the assertion must not trigger.

Ummm... what's the point of MAXPHYS if we allow IO larger than it?

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-geom mailing list