I've isolated the problem to rename not removing the old name under some
circumstances, leaving two names for a file with an nlink of 1. This
will reliably reproduce the problem for me, under 2.4.19-ac4 w/
patch-ext3-dxdir-2.4.19-4.
Generate a new filesystem: this will create htree-bug.fs
$ sh genfs
# mkdir m
# mount -o loop htree-bug.fs m
$ gcc -o tickle tickle.c
$ ./tickle m/test
*** rename("drivers/scsi/psi240i.h", "drivers/scsi/psi240i.h.orig") failure:
stating drivers/scsi/psi240i.h
ino=294
nlink=1
stating drivers/scsi/psi240i.h.orig
ino=294
nlink=1
*** rename("drivers/scsi/sun3_scsi.h", "drivers/scsi/sun3_scsi.h.orig") failure:
stating drivers/scsi/sun3_scsi.h
ino=350
nlink=1
stating drivers/scsi/sun3_scsi.h.orig
ino=350
nlink=1
# umount m
$ e2fsck -f htree-bug.fs
e2fsck 1.30-WIP (30-Sep-2002)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 294 ref count is 1, should be 2. Fix<y>? yes
Inode 350 ref count is 1, should be 2. Fix<y>? yes
Pass 5: Checking group summary information
htree-bug.fs: ***** FILE SYSTEM WAS MODIFIED *****
htree-bug.fs: 541/10240 files (0.2% non-contiguous), 1369/10240 blocks
exit status 1
$ debugfs htree-bug.fs
debugfs 1.30-WIP (30-Sep-2002)
debugfs: ncheck 294
Inode Pathname
294 /test/drivers/scsi/psi240i.h
debugfs: ncheck 350
Inode Pathname
350 /test/drivers/scsi/sun3_scsi.h
J
# script to generate a filesystem
FS=${1:-htree-bug.fs}
dd 'count=40k' 'bs=1k' < /dev/zero > $FS
mke2fs -F -b4096 -j -J size=4 $FS
echo 'set_super_value hash_seed ac791939-995d-4962-bb03-86a0f8626a0c' | debugfs -w $FS
e2fsck -f $FS
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Nov 07 2002 - 22:00:45 EST