Date: Wed, 14 Jul 1999 22:17:39 +0200 From: Bjoern Fischer <bfischer@Techfak.Uni-Bielefeld.DE> To: freebsd-stable@freebsd.org Subject: interesting ffs dup alloc Message-ID: <19990714221739.A408@frolic.no-support.loc>
index | next in thread | raw e-mail
Hello,
shortly our server (3.2-STABLE) paniced (ffs_valloc: dup alloc) while
s.o. was trying to create a directory on an NFS client. As I examined
the crashdump roughly I found that inode 91 was about to be allocated
for the new dir. But "lost+found" was already assigned to inode 91.
This "lost+found" directory was initially created by fsck. Just
randomness or a really strange thing?
Attached is an excerpt from a debugger session,
comments start with "***":
(kgdb) where
***[...] you won't need this...
#9 0xc01488cc in panic (fmt=0xc022586d "ffs_valloc: dup alloc")
at ../../kern/kern_shutdown.c:444
#10 0xc01c773e in ffs_valloc (pvp=0xc5ed9900, mode=16877, cred=0xc0b1b384,
vpp=0xc5e4ea8c) at ../../ufs/ffs/ffs_alloc.c:604
#11 0xc01d857e in ufs_mkdir (ap=0xc5e4ec00) at ../../ufs/ufs/ufs_vnops.c:1297
#12 0xc01d95d5 in ufs_vnoperate (ap=0xc5e4ec00)
at ../../ufs/ufs/ufs_vnops.c:2299
#13 0xc019dccc in nfsrv_mkdir (nfsd=0xc0b1b300, slp=0xc09f3a00,
procp=0xc5dfd860, mrq=0xc5e4ee2c) at vnode_if.h:611
#14 0xc01aba0c in nfssvc_nfsd (nsd=0xc5e4ee8c, argp=0x80719bc "", p=0xc5dfd860)
at ../../nfs/nfs_syscalls.c:656
#15 0xc01ab309 in nfssvc (p=0xc5dfd860, uap=0xc5e4ef94)
at ../../nfs/nfs_syscalls.c:342
#16 0xc0200b6c in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 4,
tf_esi = 0, tf_ebp = -1077944892, tf_isp = -974852124, tf_ebx = 0,
tf_edx = -1077945296, tf_ecx = 0, tf_eax = 155, tf_trapno = 12,
tf_err = 2, tf_eip = 134518896, tf_cs = 31, tf_eflags = 646,
tf_esp = -1077945288, tf_ss = 39}) at ../../i386/i386/trap.c:1100
#17 0xc01f6cbc in Xint0x80_syscall ()
#18 0x80480e9 in ?? ()
(kgdb) frame 10
#10 0xc01c773e in ffs_valloc (pvp=0xc5ed9900, mode=16877, cred=0xc0b1b384,
vpp=0xc5e4ea8c) at ../../ufs/ffs/ffs_alloc.c:604
604 panic("ffs_valloc: dup alloc");
(kgdb) print /o ip->i_din.di_mode
$9 = 041777
***ip->i_din.di_mode=ip->i_mode; this is drwxrwxrwt; mode of lost+found
(kgdb) print ip->i_number
$10 = 91
***this lost+found
Is it possible that fsck failed to create lost+found properly? It seems
like it doesn't use mkdir() for creation. BTW, yes I'm using
softupdates. Any hints where to look for more details? This is a
production server and I'm planning to delete and recreate lost+found
manually hoping it works as a workaround.
Björn Fischer
--
-----BEGIN GEEK CODE BLOCK-----
GCS d--(+) s++: a- C+++(-) UB++++OSI++++$ P+++(-) L+++(--) !E W- N+ o>+
K- !w !O !M !V PS++ PE- PGP++ t+++ !5 X++ tv- b+++ D++ G e+ h-- y+
------END GEEK CODE BLOCK------
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990714221739.A408>
