Fwd: Re: zfs-related(?) panic in cache_enter: wrong vnode type
Andriy Gapon
avg at FreeBSD.org
Wed Dec 7 18:34:05 UTC 2011
Trying to find ZFS experts here too :-)
-------- Original Message --------
Message-ID: <4EDFABD7.20301 at FreeBSD.org>
Date: Wed, 07 Dec 2011 20:09:27 +0200
From: Andriy Gapon <avg at FreeBSD.org>
To: freebsd-current at FreeBSD.ORG, freebsd-fs at FreeBSD.ORG
Subject: Re: zfs-related(?) panic in cache_enter: wrong vnode type
References: <4EDF995B.9000407 at FreeBSD.org> <4EDFA354.60909 at FreeBSD.org>
In-Reply-To: <4EDFA354.60909 at FreeBSD.org>
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 <Address 0x104 out of bounds>) 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
>> <Address 0x80880a000 out of bounds>, 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
More information about the zfs-devel
mailing list