From owner-freebsd-current@FreeBSD.ORG Wed Dec 7 18:09:30 2011 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD3701065672; Wed, 7 Dec 2011 18:09:30 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 036378FC08; Wed, 7 Dec 2011 18:09:29 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id UAA01823; Wed, 07 Dec 2011 20:09:28 +0200 (EET) (envelope-from avg@FreeBSD.org) Message-ID: <4EDFABD7.20301@FreeBSD.org> Date: Wed, 07 Dec 2011 20:09:27 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:8.0) Gecko/20111109 Thunderbird/8.0 MIME-Version: 1.0 To: freebsd-current@FreeBSD.org, freebsd-fs@FreeBSD.org References: <4EDF995B.9000407@FreeBSD.org> <4EDFA354.60909@FreeBSD.org> In-Reply-To: <4EDFA354.60909@FreeBSD.org> X-Enigmail-Version: undefined Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: Re: zfs-related(?) panic in cache_enter: wrong vnode type X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Dec 2011 18:09:30 -0000 on 07/12/2011 19:33 Andriy Gapon said the following: > > A detail that may or may not be useful. > It seems that the panic happened when tried to resume a vim process. The process > was suspended, its current directory and a file being edited/viewed may have been > already removed. And another data point: (kgdb) p ((znode_t *)dvp->v_data)->z_unlinked Perhaps lookup in unlinked directories should just fail? I am not sufficiently familiar with VFS, so just guessing. > on 07/12/2011 18:50 Andriy Gapon said the following: >> >> (kgdb) bt >> #0 doadump (textdump=1) at pcpu.h:224 >> #1 0xffffffff804f6d3b in kern_reboot (howto=260) at >> /usr/src/sys/kern/kern_shutdown.c:447 >> #2 0xffffffff804f63e9 in panic (fmt=0x104
) at >> /usr/src/sys/kern/kern_shutdown.c:635 >> #3 0xffffffff80585f46 in cache_enter (dvp=0xfffffe003d4763c0, >> vp=0xfffffe0142517000, cnp=0xffffff82393b3708) at /usr/src/sys/kern/vfs_cache.c:726 >> #4 0xffffffff81a90900 in zfs_lookup (dvp=0xfffffe003d4763c0, >> nm=0xffffff82393b3140 "..", vpp=0xffffff82393b36e0, cnp=0xffffff82393b3708, >> nameiop=0, cr=0xfffffe0042e88100, td=0xfffffe000fdfa480, >> flags=0) at >> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:1470 >> #5 0xffffffff81a91570 in zfs_freebsd_lookup (ap=0xffffff82393b32c0) at >> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:5858 >> #6 0xffffffff8073f054 in VOP_CACHEDLOOKUP_APV (vop=0xffffffff81b05a20, >> a=0xffffff82393b32c0) at vnode_if.c:187 >> #7 0xffffffff80586bf4 in vfs_cache_lookup (ap=Variable "ap" is not available. >> ) at vnode_if.h:80 >> #8 0xffffffff80740a5c in VOP_LOOKUP_APV (vop=0xffffffff81b05a20, >> a=0xffffff82393b33a0) at vnode_if.c:123 >> #9 0xffffffff8058e42c in lookup (ndp=0xffffff82393b36a0) at vnode_if.h:54 >> #10 0xffffffff8058f17e in namei (ndp=0xffffff82393b36a0) at >> /usr/src/sys/kern/vfs_lookup.c:312 >> #11 0xffffffff805a890d in vn_open_cred (ndp=0xffffff82393b36a0, >> flagp=0xffffff82393b3918, cmode=0, vn_open_flags=Variable "vn_open_flags" is not >> available. >> ) at /usr/src/sys/kern/vfs_vnops.c:195 >> #12 0xffffffff80589e7e in vop_stdvptocnp (ap=Variable "ap" is not available. >> ) at /usr/src/sys/kern/vfs_default.c:774 >> #13 0xffffffff8073b012 in VOP_VPTOCNP_APV (vop=0xffffffff80a99140, >> a=0xffffff82393b39b0) at vnode_if.c:3479 >> #14 0xffffffff80584665 in vn_vptocnp_locked (vp=0xffffff82393b3a50, >> cred=0xfffffe0042e88100, >> buf=0xfffffe000ca06000 >> "������������������������������������������������������������������������������������������������������������������������������������������������������"..., >> buflen=0xffffff82393b3a4c) at vnode_if.h:1564 >> #15 0xffffffff80584bab in vn_fullpath1 (td=0xfffffe000fdfa480, >> vp=0xfffffe003d4763c0, rdir=0xfffffe000cd4d000, >> buf=0xfffffe000ca06000 >> "������������������������������������������������������������������������������������������������������������������������������������������������������"..., >> retbuf=0xffffff82393b3ab0, buflen=1023) at /usr/src/sys/kern/vfs_cache.c:1218 >> #16 0xffffffff8058526a in kern___getcwd (td=0xfffffe000fdfa480, buf=0x80880a000 >>
, bufseg=UIO_USERSPACE, buflen=1024) at >> /usr/src/sys/kern/vfs_cache.c:960 >> #17 0xffffffff805853f4 in sys___getcwd (td=Variable "td" is not available. >> ) at /usr/src/sys/kern/vfs_cache.c:934 >> #18 0xffffffff806d2069 in amd64_syscall (td=0xfffffe000fdfa480, traced=0) at >> subr_syscall.c:131 >> #19 0xffffffff806bb4e7 in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:387 >> #20 0x00000008031adb2c in ?? () >> Previous frame inner to this frame (corrupt stack?) >> (kgdb) fr 3 >> #3 0xffffffff80585f46 in cache_enter (dvp=0xfffffe003d4763c0, >> vp=0xfffffe0142517000, cnp=0xffffff82393b3708) at /usr/src/sys/kern/vfs_cache.c:726 >> 726 KASSERT(vp == NULL || vp->v_type == VDIR, >> (kgdb) list >> 721 if (dvp->v_cache_dd != NULL) { >> 722 CACHE_WUNLOCK(); >> 723 cache_free(ncp); >> 724 return; >> 725 } >> 726 KASSERT(vp == NULL || vp->v_type == VDIR, >> 727 ("wrong vnode type %p", vp)); >> 728 dvp->v_cache_dd = ncp; >> 729 } >> 730 >> (kgdb) p *vp >> $1 = {v_type = VREG, v_tag = 0xffffffff81afe449 "zfs", v_op = 0xffffffff81b05a20, >> v_data = 0xfffffe020d9a8320, v_mount = 0xfffffe001a283600, v_nmntvnodes = >> {tqe_next = 0xfffffe00347c6d20, >> tqe_prev = 0xfffffe013b0575c8}, v_un = {vu_mount = 0x0, vu_socket = 0x0, >> vu_cdev = 0x0, vu_fifoinfo = 0x0}, v_hashlist = {le_next = 0x0, le_prev = 0x0}, >> v_hash = 0, v_cache_src = { >> lh_first = 0x0}, v_cache_dst = {tqh_first = 0xfffffe003dfcf690, tqh_last = >> 0xfffffe003dfcf6b0}, v_cache_dd = 0x0, v_cstart = 0, v_lasta = 0, v_lastw = 0, >> v_clen = 0, v_lock = {lock_object = { >> lo_name = 0xffffffff81afe449 "zfs", lo_flags = 91947008, lo_data = 0, >> lo_witness = 0xffffff800066e380}, lk_lock = 18446741874952610944, lk_exslpfail = >> 0, lk_timo = 51, lk_pri = 96}, >> v_interlock = {lock_object = {lo_name = 0xffffffff807e610a "vnode interlock", >> lo_flags = 16973824, lo_data = 0, lo_witness = 0xffffff8000665600}, mtx_lock = 4}, >> v_vnlock = 0xfffffe0142517098, >> v_holdcnt = 2, v_usecount = 1, v_iflag = 0, v_vflag = 0, v_writecount = 0, >> v_freelist = {tqe_next = 0xfffffe00347c6d20, tqe_prev = 0xfffffe02110d3e30}, >> v_bufobj = {bo_mtx = {lock_object = { >> lo_name = 0xffffffff807efdfa "bufobj interlock", lo_flags = 16973824, >> lo_data = 0, lo_witness = 0xffffff800066c300}, mtx_lock = 4}, bo_clean = {bv_hd = >> {tqh_first = 0x0, >> tqh_last = 0xfffffe0142517140}, bv_root = 0x0, bv_cnt = 0}, bo_dirty = >> {bv_hd = {tqh_first = 0x0, tqh_last = 0xfffffe0142517160}, bv_root = 0x0, bv_cnt = >> 0}, bo_numoutput = 0, bo_flag = 0, >> bo_ops = 0xffffffff80a95ec0, bo_bsize = 131072, bo_object = >> 0xfffffe01fccb5620, bo_synclist = {le_next = 0x0, le_prev = 0x0}, bo_private = >> 0xfffffe0142517000, __bo_vnode = 0xfffffe0142517000}, >> v_pollinfo = 0x0, v_label = 0x0, v_lockf = 0x0} >> (kgdb) >> > > -- Andriy Gapon