code in GEOM thread could not use vnode API (Was: alq_open_flags() panics in _mtx_lock_flags())

Kostik Belousov kostikbel at gmail.com
Mon Oct 3 16:31:06 UTC 2011


On Mon, Oct 03, 2011 at 08:27:28PM +0400, Lev Serebryakov wrote:
> Hello, Kostik.
> You wrote 3 октября 2011 г., 20:01:45:
> 
> > Look at the body of e.g. g_io_schedule_down(), the
> >                 THREAD_NO_SLEEPING();
> > call right before the call to geom start method.
> 
> > Basically, you cannot use any kernel subsystem in the context of
> > the up/down threads that could sleep. This includes VFS, VM and
> > everything that is layered on top of it.
>   VM too? Allocating of new element to put into working queue is
>  prohibited? It is what (almost) every GEOM class does.
>   Even geom_nop() allocate new struct bio from g_down thread.
Sleeping (and thus non-failing) allocation is prohibited.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20111003/607a030b/attachment.pgp


More information about the freebsd-fs mailing list