Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Jul 2009 18:11:05 +0200
From:      Thomas Backman <serenity@exscape.org>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        freebsd-fs@freebsd.org, FreeBSD current <freebsd-current@freebsd.org>, Pawel Jakub Dawidek <pjd@freebsd.org>
Subject:   Re: zfs: Fatal trap 12: page fault while in kernel mode
Message-ID:  <6D47A34B-0753-4CED-BF3D-C505B37748FC@exscape.org>
In-Reply-To: <4A70728C.7020004@freebsd.org>
References:  <20090727072503.GA52309@jpru.ffm.jpru.de> <4A6E06E6.9030300@mail.zedat.fu-berlin.de> <4A6EC9E2.5070200@icyb.net.ua> <20090729084723.GD1586@garage.freebsd.pl> <F4F82B3E-C119-40EF-9AA4-937052876D1E@exscape.org> <4A7030B6.8010205@icyb.net.ua> <97D5950F-4E4D-4446-AC22-92679135868D@exscape.org> <4A7048A9.4020507@icyb.net.ua> <52AA86CB-6C06-4370-BA73-CE19175467D0@exscape.org> <4A705299.8060504@icyb.net.ua> <D3491B77-DA5C-4E10-BE1D-D6EF8CFB112E@exscape.org> <4A7054E1.5060402@icyb.net.ua> <5918824D-A67C-43E6-8685-7B72A52B9CAE@exscape.org> <4A705E50.8070307@icyb.net.ua> <4A70728C.7020004@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jul 29, 2009, at 18:02, Andriy Gapon wrote:

> on 29/07/2009 17:36 Andriy Gapon said the following:
>> on 29/07/2009 17:10 Thomas Backman said the following:
>> [snip]
>>> (kgdb) fr 11
>> [snip]
>>> (kgdb) p *sx
>>> $8 = {lock_object = {lo_name = 0xffffffff80b5634c "zp->z_lock",  
>>> lo_flags
>>> = 40894464 [0x2700000, btw], lo_data = 0, lo_witness = 0x0},
>>>  sx_lock = 6}
>>>
>>> ... as you might notice, I'm mostly clueless as to what I'm doing  
>>> here. :o
>>> Hope that helps (a bit), though.
>>
>> Yes, it does and a lot.
>> sx_lock = 6 means that this sx lock is destroyed:
>> #define  
>> SX_LOCK_DESTROYED                                               \
>>        (SX_LOCK_SHARED_WAITERS | SX_LOCK_EXCLUSIVE_WAITERS)
>>
>> And lo_name tells that this is zp->z_lock.
>> This lock is destroyed in zfs_znode_cache_destructor.
>> Not enough knowledge for me to proceed further.
>
> So I guess that this is a case when zfs_znode_delete() was called on  
> znode that
> was still referenced from some vnode. When the vnode gets reclaimed  
> we get this
> problem.
> Could you please examine vp in frame 15 or 16?
>
> -- 
> Andriy Gapon
Sure.
Lots of info in that one:

(kgdb) fr 15
#15 0xffffffff803c839e in vgonel (vp=0xffffff0009252588) at vnode_if.h: 
830
830     in vnode_if.h
(kgdb) p *vp
$3 = {v_type = VDIR, v_tag = 0xffffffff80b56347 "zfs", v_op =  
0xffffffff80b5af00, v_data = 0xffffff00090d5000,
   v_mount = 0xffffff0002cd7bc0, v_nmntvnodes = {tqe_next =  
0xffffff00090f5000, tqe_prev = 0xffffff0009252960},
   v_un = {vu_mount = 0x0, vu_socket = 0x0, vu_cdev = 0x0, vu_fifoinfo  
= 0x0, vu_yield = 0}, v_hashlist = {
     le_next = 0x0, le_prev = 0x0}, v_hash = 0, v_cache_src =  
{lh_first = 0x0}, v_cache_dst = {tqh_first = 0x0,
     tqh_last = 0xffffff00092525e8}, v_cache_dd = 0x0, v_cstart = 0,  
v_lasta = 0, v_lastw = 0, v_clen = 0, v_lock = {
     lock_object = {lo_name = 0xffffffff80b56347 "zfs", lo_flags =  
91947008, lo_data = 0, lo_witness = 0x0},
     lk_lock = 18446742974952890368, lk_timo = 51, lk_pri = 80},  
v_interlock = {lock_object = {
       lo_name = 0xffffffff806126d9 "vnode interlock", lo_flags =  
16973824, lo_data = 0, lo_witness = 0x0},
     mtx_lock = 4}, v_vnlock = 0xffffff0009252620, v_holdcnt = 1,  
v_usecount = 0, v_iflag = 128, v_vflag = 0,
   v_writecount = 0, v_freelist = {tqe_next = 0xffffff00090c3760,  
tqe_prev = 0xffffff002c0bfc18}, v_bufobj = {
     bo_mtx = {lock_object = {lo_name = 0xffffffff806126e9 "bufobj  
interlock", lo_flags = 16973824, lo_data = 0,
         lo_witness = 0x0}, mtx_lock = 4}, bo_clean = {bv_hd =  
{tqh_first = 0x0, tqh_last = 0xffffff00092526c0},
       bv_root = 0x0, bv_cnt = 0}, bo_dirty = {bv_hd = {tqh_first =  
0x0, tqh_last = 0xffffff00092526e0},
       bv_root = 0x0, bv_cnt = 0}, bo_numoutput = 0, bo_flag = 0,  
bo_ops = 0xffffffff8079afa0, bo_bsize = 131072,
     bo_object = 0x0, bo_synclist = {le_next = 0x0, le_prev = 0x0},  
bo_private = 0xffffff0009252588,
     __bo_vnode = 0xffffff0009252588}, v_pollinfo = 0x0, v_label =  
0x0, v_lockf = 0x0}

Regards,
Thomas



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6D47A34B-0753-4CED-BF3D-C505B37748FC>