Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Dec 2013 11:17:59 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        freebsd-fs <freebsd-fs@FreeBSD.org>
Cc:        Konstantin Belousov <kib@FreeBSD.org>
Subject:   namecache: numneg > 0 but ncneg is empty
Message-ID:  <52B16847.8090905@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

I've been running a test that exercises vfs, fs and namecache code quite a lot
and I have run into the following panic:

#2  0xffffffff808e9b43 in panic (fmt=<value optimized out>) at
/usr/src/sys/kern/kern_shutdown.c:637
#3  0xffffffff80ce57dd in trap_fatal (frame=0xc, eva=18446744071578770679) at
/usr/src/sys/amd64/amd64/trap.c:879
#4  0xffffffff80ce58a6 in trap_pfault (frame=0xffffff9de1875260, usermode=0) at
/usr/src/sys/amd64/amd64/trap.c:700
#5  0xffffffff80ce60d7 in trap (frame=0xffffff9de1875260) at
/usr/src/sys/amd64/amd64/trap.c:463
#6  0xffffffff80cce853 in calltrap () at /usr/src/sys/amd64/amd64/exception.S:232
#7  0xffffffff8097b46d in cache_zap (ncp=0x0) at /usr/src/sys/kern/vfs_cache.c:417
#8  0xffffffff8097c22f in cache_enter_time (dvp=0xfffffe031c7215f8,
vp=0xfffffe0a684f05f8, cnp=0xffffff9de1875858, tsp=0x0, dtsp=0x0) at
/usr/src/sys/kern/vfs_cache.c:902
#9  0xffffffff81b9b26c in zfs_lookup (dvp=0xfffffe031c7215f8,
nm=0xffffff9de1875460 "5", vpp=0xffffff9de1875830, cnp=0xffffff9de1875858,
nameiop=1, cr=0xfffffe0a8f937800, td=0xfffffe04a80c2490, flags=0)
    at
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:1555
#10 0xffffffff81b9b338 in zfs_freebsd_lookup (ap=0xffffff9de18755d0) at
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:5946
#11 0xffffffff80d8f403 in VOP_CACHEDLOOKUP_APV (vop=0xffffffff81c26ee0,
a=0xffffff9de18755d0) at vnode_if.c:193
#12 0xffffffff8097cef3 in vfs_cache_lookup (ap=<value optimized out>) at
vnode_if.h:80
#13 0xffffffff80d8f623 in VOP_LOOKUP_APV (vop=0xffffffff81c26ee0,
a=0xffffff9de18756b0) at vnode_if.c:126
#14 0xffffffff80984bed in lookup (ndp=0xffffff9de18757f0) at vnode_if.h:54
#15 0xffffffff80985a43 in namei (ndp=0xffffff9de18757f0) at
/usr/src/sys/kern/vfs_lookup.c:294
#16 0xffffffff809981a2 in kern_mkdirat (td=0xfffffe04a80c2490, fd=-100,
path=0x801c19110 <Address 0x801c19110 out of bounds>, segflg=UIO_USERSPACE,
mode=511) at /usr/src/sys/kern/vfs_syscalls.c:3830
#17 0xffffffff809983f6 in kern_mkdir (td=<value optimized out>, path=<value
optimized out>, segflg=<value optimized out>, mode=<value optimized out>) at
/usr/src/sys/kern/vfs_syscalls.c:3810
#18 0xffffffff80998414 in sys_mkdir (td=<value optimized out>, uap=<value
optimized out>) at /usr/src/sys/kern/vfs_syscalls.c:3789

(kgdb) fr 8
#8  0xffffffff8097c22f in cache_enter_time (dvp=0xfffffe031c7215f8,
vp=0xfffffe0a684f05f8, cnp=0xffffff9de1875858, tsp=0x0, dtsp=0x0) at
/usr/src/sys/kern/vfs_cache.c:902
902                     cache_zap(ncp);
(kgdb) list
897                     zap = 1;
898             }
899             if (hold)
900                     vhold(dvp);
901             if (zap)
902                     cache_zap(ncp);
903             CACHE_WUNLOCK();
904     }
905
906     /*
(kgdb) i loc
ncp = (struct namecache *) 0x0
n2 = (struct namecache *) 0xffffffff8178a740
ncpp = (struct nchashhead *) 0xffffff8ccde4e9b0
hash = <value optimized out>
flag = 0
hold = 1
zap = 1
len = <value optimized out>

(kgdb) p numneg
$4 = 437
(kgdb) p ncp
$7 = (struct namecache *) 0x0
(kgdb) p ncneg
$8 = {tqh_first = 0x0, tqh_last = 0xffffffff8178a710}


I am not sure that there is a bug in namecache, but if there is one, then the
only suspicious place I could find is ".." handling in cache_enter_time().

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52B16847.8090905>