freebsd-dev/sys/fs
Bruce Evans fba2e6106f Quick fix for non-unique inode numbers for hard links. We use the
byte offset of the directory entry for the inode number for all types
of files except directories, although this breaks hard links for
non-directories even if it doesn't cause overflow.  Just ignore this
broken inode number for stat() and readdir() and return a less broken
one (the block offset of the file), so that applications normally can't
see the brokenness.

This leaves at least the following brokenness:
- extra inodes, vnodes and caching for hard links.
- various overflow bugs.  cd9660 supports 64-bit block numbers, but we
  silently ignore the top 32 bits in isonum_733() and then drop another
  10 bits for our broken inode numbers.  We may also have sign extension
  bugs from storing 32-bit extents in ints and longs even if ints are
  32-bits.  These bugs affect DVDs.  mkisofs apparently limits them
  by writing directory entries first.

Inode numbers were broken mainly in 4.4BSD-Lite2.  FreeBSD-1.1.5 seems
to have a correct implementation modulo the overflow bugs.  We need
to look up directory entries from inodes for symlinks only.  FreeBSD-1.1.5
use separate fields (iso_parent_extent, iso_parent) to point to the
directory entry.  4.4BSD-Lite doesn't have these, and abuses i_ino to
point to the directory entry.  Correct pointers are impossible for
hard links, but symlinks can't be hard links.
2002-05-22 08:50:18 +00:00
..
cd9660 Quick fix for non-unique inode numbers for hard links. We use the 2002-05-22 08:50:18 +00:00
coda More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
deadfs Use vop_panic() instead of rolling our own. 2002-05-02 19:13:44 +00:00
devfs Fix several bugs in devfs_lookupx(). When we check the nameiop to 2002-05-10 15:41:14 +00:00
fdescfs Convert fdescfs to nmount. 2002-05-02 20:24:50 +00:00
fifofs Lock the writer socket across sorwakeup(fip->fi_writesock). 2002-05-21 02:37:56 +00:00
hpfs More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
msdosfs More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
ntfs More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
nullfs Fix null_lock() not unlocking vp->v_interlock if LK_THISLAYER. 2002-05-21 18:07:33 +00:00
nwfs More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
portalfs Lock down a socket, milestone 1. 2002-05-20 05:41:09 +00:00
procfs Change p_can{debug,see,sched,signal}()'s first argument to be a thread 2002-05-19 00:14:50 +00:00
pseudofs Change p_can{debug,see,sched,signal}()'s first argument to be a thread 2002-05-19 00:14:50 +00:00
smbfs More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
specfs Remove a check of blocknumbers/offsets which will be pointless with 2002-05-18 09:32:56 +00:00
udf In VOP_LOOKUP, don't assume that the final pathname component 2002-05-16 19:22:39 +00:00
umapfs Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
unionfs Change the vm_zone calls over to uma calls. Remove the reference to the 2002-04-08 06:57:43 +00:00