Skip site navigation (1)Skip section navigation (2)
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>