fsck -y failed to cure UFS2 volume with lost '.' entry in one
direcotry
Vladimir Grebenschikov
vova at fbsd.ru
Sat Nov 24 17:32:22 PST 2007
Hi fs
I have a trouble with incurable /usr partition.
Usual output of background fsck after unclean shutdown is:
Nov 24 20:50:58 vbook fsck: /dev/ad0s2d: MISSING '.' I=7113132 OWNER=root MODE=40755
Nov 24 20:50:58 vbook fsck: /dev/ad0s2d: SIZE=512 MTIME=Oct 16 02:11 2007
Nov 24 20:50:58 vbook fsck: /dev/ad0s2d: DIR=/compat/linux/usr/lib/locale/af_ZA
Nov 24 20:50:58 vbook fsck:
Nov 24 20:50:58 vbook fsck: /dev/ad0s2d: UNEXPECTED SOFT UPDATE INCONSISTENCY; RUN fsck MANUALLY.
After that everything works fine until reboot.
On reboot it starts foreground fsck and fails.
Then, after manual fsck /usr it complains about error, but marks FS as
clean.
Then, after boot (usual boot without problems) - directory still have no
'.' entry:
# ls -al /compat/linux/usr/lib/locale/af_ZA
total 16
drwxr-xr-x 3 root wheel 6656 Oct 16 02:18 ..
# ls -ldi /compat/linux/usr/lib/locale/af_ZA/
7113132 drwxr-xr-x 1 root wheel 512 Nov 25 02:14 /compat/linux/usr/lib/locale/af_ZA/
#
and that directory can't be removed:
# rmdir /compat/linux/usr/lib/locale/af_ZA
rmdir: /compat/linux/usr/lib/locale/af_ZA: Invalid argument
#
# fsdb /dev/ad0s2d
** /dev/ad0s2d (NO WRITE)
Editing file system `/dev/ad0s2d'
Last Mounted on /usr
current inode: directory
I=2 MODE=40755 SIZE=512
BTIME=May 7 08:50:14 2006 [0 nsec]
MTIME=Nov 24 20:41:39 2007 [0 nsec]
CTIME=Nov 24 20:41:41 2007 [0 nsec]
ATIME=Nov 25 03:01:02 2007 [0 nsec]
OWNER=root GRP=wheel LINKCNT=24 FLAGS=0 BLKCNT=4 GEN=13bb592b
fsdb (inum: 2)> inode 7113132
current inode: directory
I=7113132 MODE=40755 SIZE=512
BTIME=Jun 26 22:58:21 2007 [0 nsec]
MTIME=Nov 25 02:14:10 2007 [0 nsec]
CTIME=Nov 25 02:14:10 2007 [0 nsec]
ATIME=Nov 25 03:14:27 2007 [0 nsec]
OWNER=root GRP=wheel LINKCNT=1 FLAGS=0 BLKCNT=4 GEN=98380ba
fsdb (inum: 7113132)> ls
slot 0 ino 0 reclen 20: regular, `LC_MESSAGES'
slot 1 ino 6853672 reclen 492: directory, `..'
fsdb (inum: 7113132)>
Looks like - a bug in fsck.
Any hints, how I can cure such partition ?
Looks like I can do 'ln 7113132 .'
in fsdb, or just 'clear 7113132'
But I am not sure that it is right way to move.
Also I think it is better to report bug in fsck.
# uname -a
FreeBSD vbook.fbsd.ru 7.0-BETA2 FreeBSD 7.0-BETA2 #39: Fri Nov 9
10:17:40 MSK 2007 root at vbook.fbsd.ru:/usr/obj/usr/src/sys/VBOOK
i386
# dumpfs /dev/ad0s2d | head -n 20
magic 19540119 (UFS2) time Sun Nov 25 03:20:09 2007
superblock location 65536 id [ 464080f5 d57b82de ]
ncg 388 size 36437305 blocks 35288781
bsize 16384 shift 14 mask 0xffffc000
fsize 2048 shift 11 mask 0xfffff800
frag 8 shift 3 fsbtodb 2
minfree 8% optim time symlinklen 120
maxbsize 16384 maxbpg 2048 maxcontig 8 contigsumsize 8
nbfree 473556 ndir 225259 nifree 7740525 nffree 216969
bpg 11761 fpg 94088 ipg 23552 unrefs 0
nindir 2048 inopb 64 maxfilesize 140806241583103
sbsize 2048 cgsize 16384 csaddr 3000 cssize 8192
sblkno 40 cblkno 48 iblkno 56 dblkno 3000
cgrotor 340 fmod 0 ronly 0 clean 0
avgfpdir 64 avgfilesize 16384
flags soft-updates
fsmnt /usr
volname swuid 0
--
Vladimir B. Grebenschikov
vova at fbsd.ru
More information about the freebsd-fs
mailing list