rename seems broken. Under some circumstances, it seems that rename within a directory doesn't complete properly, and leaves both the from and to names in the directory (but leaves the inode with a refcount of 1).
You'll need these:
as well as e2fsprogs-1.30(-WIP).To do this:
$ 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? yes Inode 350 ref count is 1, should be 2. Fix ? 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