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>