Deadlock between GEOM and devfs device destroy and process exit.

Hans Petter Selasky hselasky at c2i.net
Mon Feb 1 09:37:26 UTC 2010


On Monday 01 February 2010 10:23:34 Pawel Jakub Dawidek wrote:
> On Sat, Jan 30, 2010 at 12:44:51PM +0100, Pawel Jakub Dawidek wrote:
> > Maybe I'll add how I understand what's going on:
> >
> > GEOM calls destroy_dev() while holding the topology lock.
> >
> > Destroy_dev() wants to destroy device, but can't because there are
> > threads that still have it open.
> >
> > The threads can't close it, because to close it they need the topology
> > lock.
> >
> > The deadlock is quite obvious, IMHO.
> 
> Guys, changing destroy_dev() to destroy_dev_sched() in geom_dev.c fixes
> the problem for me (at least it makes race window so small that I can't
> reproduce it). Is there anyone who isn't happy with such a change?
> 

Are you sure there are no races or leftover resources that can be accessed by 
the callbacks of the device being destroyed?

--HPS


More information about the freebsd-hackers mailing list