Date: Thu, 27 Jun 2002 16:45:23 -0700 From: steve@Watt.COM (Steve Watt) To: stable@freebsd.org Subject: dirbad panic "mangled entry" in 4.6-S from yesterday Message-ID: <200206272345.g5RNjNDS079083@wattres.Watt.COM>
next in thread | raw e-mail | index | archive | help
Greetings!
I came back up to stable yesterday, after sitting at 4.6-RC2 for a while.
Things were working fine (except for ATA tagging on my DTLA drives) before
I upgraded. I reenabled tagging, and things seemed OK.
Last night, during the daily run, it panic()ed.
- - - 8< - - -
panic: ufs_dirbad: bad dir
syncing disks... ad0: WRITE command timeout tag=18 serv=0 - resetting
ad0: invalidating queued requests
ata0: resetting devices .. ad0: invalidating queued requests
done
143 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
giving up on 2 buffers
Uptime: 11h27m33s
- - - >8 - - -
traceback reveals:
- - - 8< - - -
#0 dumpsys () at /usr/src/sys/kern/kern_shutdown.c:487
#1 0xc01b9a94 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:316
#2 0xc01b9ec8 in poweroff_wait (junk=0xc0328f27, howto=-999244191)
at /usr/src/sys/kern/kern_shutdown.c:595
#3 0xc028fba6 in ufs_dirbad (ip=0xc104b500, offset=3681, how=0xc0328ed0 "mangled entry")
at /usr/src/sys/ufs/ufs/ufs_lookup.c:641
#4 0xc028f3af in ufs_lookup (ap=0xc9738dfc) at /usr/src/sys/ufs/ufs/ufs_lookup.c:291
#5 0xc02945b1 in ufs_vnoperate (ap=0xc9738dfc) at /usr/src/sys/ufs/ufs/ufs_vnops.c:2422
#6 0xc01e318e in vfs_cache_lookup (ap=0xc9738e54) at vnode_if.h:77
#7 0xc02945b1 in ufs_vnoperate (ap=0xc9738e54) at /usr/src/sys/ufs/ufs/ufs_vnops.c:2422
#8 0xc01e6129 in lookup (ndp=0xc9738eec) at vnode_if.h:52
#9 0xc01e5c14 in namei (ndp=0xc9738eec) at /usr/src/sys/kern/vfs_lookup.c:153
#10 0xc01eb649 in access (p=0xc972cc60, uap=0xc9738f80)
at /usr/src/sys/kern/vfs_syscalls.c:1632
#11 0xc02d008d in syscall2 (frame={tf_fs = 47, tf_es = 47, tf_ds = 47,
tf_edi = 671629312, tf_esi = 671612960, tf_ebp = -1077937264, tf_isp = -915173420,
tf_ebx = 671603284, tf_edx = 134515449, tf_ecx = 671612985, tf_eax = 33,
tf_trapno = 12, tf_err = 2, tf_eip = 671549752, tf_cs = 31, tf_eflags = 663,
tf_esp = -1077937340, tf_ss = 47}) at /usr/src/sys/i386/i386/trap.c:1175
#12 0xc02c43a5 in Xint0x80_syscall ()
#13 0x2806d2f5 in ?? ()
#14 0x2806d8d4 in ?? ()
#15 0x2806c9a3 in ?? ()
(kgdb) up 3
#3 0xc028fba6 in ufs_dirbad (ip=0xc104b500, offset=3681, how=0xc0328ed0 "mangled entry")
at /usr/src/sys/ufs/ufs/ufs_lookup.c:641
641 panic("ufs_dirbad: bad dir");
(kgdb) up
#4 0xc028f3af in ufs_lookup (ap=0xc9738dfc) at /usr/src/sys/ufs/ufs/ufs_lookup.c:291
291 ufs_dirbad(dp, dp->i_offset, "mangled entry");
(kgdb) list
286 if (ep->d_reclen == 0 || ep->d_reclen >
287 DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSIZ - 1)) ||
288 (dirchk && ufs_dirbadentry(vdp, ep, entryoffsetinblock))) {
289 int i;
290
291 ufs_dirbad(dp, dp->i_offset, "mangled entry");
292 i = DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSIZ - 1));
293 dp->i_offset += i;
294 entryoffsetinblock += i;
295 continue;
(kgdb) print *ep
$1 = {d_ino = 841903987, d_reclen = 0, d_type = 0 '\000', d_namlen = 18 '\022',
d_name = "\225\005\000\020\000\n\alibz.so\000m\222\005\000\024\000\b\ncrtbegin.o\000\000s\222\005\000\024\000\b\bcrtend.o\000\000\000\000\234\222\005\000\024\000\b\013crtbeginS.o\000«\222\005\000\024\000\b\tcrtendS.o\000\000\000²\222\005\000\024\000\b\013libdialog.a\000·\222\005\000\030\000\b\016libdialog.so.4\000ΙΈ\222\005\000\030\000\n\flibdialog.so\000\r\000\000»\222\005\000\024\000\b\blibgcc.a\000\000\000\000‘\222\005\000\030\000\b\flibgcc_pi"...}
(kgdb) print *dp
$2 = {i_lock = {lk_interlock = {lock_data = 0}, lk_flags = 1088, lk_sharecount = 0,
lk_waitcount = 0, lk_exclusivecount = 1, lk_prio = 8, lk_wmesg = 0xc0328bca "inode",
lk_timo = 6, lk_lockholder = 89281}, i_hash = {le_next = 0x0, le_prev = 0xc138e420},
i_vnode = 0xc8f93780, i_devvp = 0xc8a95900, i_flag = 128, i_dev = 0xc1024b80,
i_number = 365056, i_effnlink = 4, inode_u = {fs = 0xc1030000, e2fs = 0xc1030000},
i_dquot = {0x0, 0x0}, i_modrev = 62085506378, i_lockf = 0x0, i_count = 0,
i_endoff = 0, i_diroff = 3584, i_offset = 3681, i_ino = 365448, i_reclen = 28,
i_spare = {0, 0, 0}, i_dirhash = 0xc121ac00, i_din = {di_mode = 16877, di_nlink = 4,
di_u = {oldids = {0, 0}, inumber = 0}, di_size = 7168, di_atime = 1025132327,
di_atimensec = 0, di_mtime = 1025132634, di_mtimensec = 0, di_ctime = 1025132634,
di_ctimensec = 0, di_db = {1514792, 0 <repeats 11 times>}, di_ib = {0, 0, 0},
di_flags = 0, di_blocks = 14, di_gen = 1517164032, di_uid = 0, di_gid = 0,
di_spare = {0, 0}}}
- - - >8 - - -
So all I see from that is that something is, indeed, not right. I don't know
the code well enough to say what.
Got the core and kernel.debug lying around, if anyone wants more info. I ran
daily by hand, but it didn't happen. Might have something to do with the
news expiration running at the same time as daily. We'll see tonight.
--
Steve Watt KD6GGD PP-ASEL-IA ICBM: 121W 56' 57.8" / 37N 20' 14.9"
Internet: steve @ Watt.COM Whois: SW32
Free time? There's no such thing. It just comes in varying prices...
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206272345.g5RNjNDS079083>
