svn commit: r227009 - head/sys/geom

Alexander Motin mav at FreeBSD.org
Sun Nov 13 00:10:50 UTC 2011


On 11/12/11 23:09, Marius Strobl wrote:
> On Tue, Nov 01, 2011 at 11:12:23PM +0000, Alexander Motin wrote:
>> Author: mav
>> Date: Tue Nov  1 23:12:22 2011
>> New Revision: 227009
>> URL: http://svn.freebsd.org/changeset/base/227009
>>
>> Log:
>>   Make orphan() method in geom_dev asynchronous using destroy_dev_sched_cb()
>>   instead of destroy_dev(). It moves device destruction waiting out of the
>>   topology lock and so fixes dead lock between orphanization and closing.
>>   Real provider and geom destruction called from swi context after device
>>   destroyed as callback of the destroy_dev_sched_cb().
>>
> 
> This change causes fsck_ffs(8) and mount(8) to hang unkillably on
> sparc64 when the kernel is built with either GEOM_PART_GPT or
> GEOM_LABEL. When breaking into the kernel the backtrace so far
> looked like one of these two ways:
> g_wither_washer() at g_wither_washer+0x18
> g_run_events() at g_run_events+0x4dc
> g_event_procbody() at g_event_procbody+0x8c
> fork_exit() at fork_exit+0x9c
> fork_trampoline() at fork_trampoline+0x8
> 
> find_instance() at find_instance+0x80
> _sx_xlock() at _sx_xlock+0xf0
> g_run_events() at g_run_events+0xb0
> g_event_procbody() at g_event_procbody+0x8c
> fork_exit() at fork_exit+0x9c
> fork_trampoline() at fork_trampoline+0x8
> 
> I've no clue about geom(4) so I also have no idea how to debug this.

I think `show alllocks` in debugger and backtraces of related threads
could be useful.

-- 
Alexander Motin


More information about the svn-src-all mailing list