freebsd-dev/sys/conf
Adrian Chadd 0b0c10b48d Initial commit of IFS - a inode-namespaced FFS. Here is a short
description:

How it works:
--

Basically ifs is a copy of ffs, overriding some vfs/vnops. (Yes, hack.)
I didn't see the need in duplicating all of sys/ufs/ffs to get this
off the ground.

File creation is done through a special file - 'newfile' . When newfile
is called, the system allocates and returns an inode. Note that newfile
is done in a cloning fashion:

fd = open("newfile", O_CREAT|O_RDWR, 0644);
fstat(fd, &st);

printf("new file is %d\n", (int)st.st_ino);

Once you have created a file, you can open() and unlink() it by its returned
inode number retrieved from the stat call, ie:

fd = open("5", O_RDWR);

The creation permissions depend entirely if you have write access to the
root directory of the filesystem.

To get the list of currently allocated inodes, VOP_READDIR has been added
which returns a directory listing of those currently allocated.

--

What this entails:

* patching conf/files and conf/options to include IFS as a new compile
  option (and since ifs depends upon FFS, include the FFS routines)

* An entry in i386/conf/NOTES indicating IFS exists and where to go for
  an explanation

* Unstaticize a couple of routines in src/sys/ufs/ffs/ which the IFS
  routines require (ffs_mount() and ffs_reload())

* a new bunch of routines in src/sys/ufs/ifs/ which implement the IFS
  routines. IFS replaces some of the vfsops, and a handful of vnops -
  most notably are VFS_VGET(), VOP_LOOKUP(), VOP_UNLINK() and VOP_READDIR().
  Any other directory operation is marked as invalid.

What this results in:

* an IFS partition's create permissions are controlled by the perm/ownership of
  the root mount point, just like a normal directory

* Each inode has perm and ownership too

* IFS does *NOT* mean an FFS partition can be opened per inode. This is a
  completely seperate filesystem here

* Softupdates doesn't work with IFS, and really I don't think it needs it.
  Besides, fsck's are FAST. (Try it :-)

* Inodes 0 and 1 aren't allocatable because they are special (dump/swap IIRC).
  Inode 2 isn't allocatable since UFS/FFS locks all inodes in the system against
  this particular inode, and unravelling THAT code isn't trivial. Therefore,
  useful inodes start at 3.

Enjoy, and feedback is definitely appreciated!
2000-10-14 03:02:30 +00:00
..
defines Add some more defines that don't change the genericness of a file. 1995-05-11 20:21:23 +00:00
files Initial commit of IFS - a inode-namespaced FFS. Here is a short 2000-10-14 03:02:30 +00:00
files.alpha Move the ata/atapi files to the common area. They were the same on all 2000-10-03 09:23:49 +00:00
files.i386 update to i4b version 0.95.04 2000-10-09 13:41:07 +00:00
files.ia64 Next round of fixes to the ia64 code. This includes simulated clock and 2000-10-04 17:53:03 +00:00
files.pc98 Merged from sys/conf/{files.i386,options.i386} revisions 1.334 and 2000-10-10 08:12:15 +00:00
kern.mk Reserve register t7 on alpha to point at per-cpu global variables. 2000-04-28 08:44:42 +00:00
kmod.mk The kernel is now known as `kernel.ko' and it and its matching modules 2000-09-05 22:37:46 +00:00
ldscript.alpha Add $FreeBSD$ 2000-01-11 15:35:16 +00:00
ldscript.amd64 Add $FreeBSD$ 2000-01-11 15:35:16 +00:00
ldscript.i386 Add $FreeBSD$ 2000-01-11 15:35:16 +00:00
ldscript.ia64 This is the first snapshot of the FreeBSD/ia64 kernel. This kernel will 2000-09-29 13:46:07 +00:00
ldscript.powerpc Add $FreeBSD$ 2000-01-11 15:35:16 +00:00
majors Add the ar ATA pseudo RAID driver 2000-10-13 13:02:17 +00:00
Makefile.alpha Do not prepend DESTDIR' to KMODDIR' as sys/conf/kmod.mk already does 2000-10-03 20:05:36 +00:00
Makefile.i386 Blah rev 1.208 got bits of the proposed "I want the file /kernel to be 2000-10-03 20:09:51 +00:00
Makefile.ia64 Do not prepend DESTDIR' to KMODDIR' as sys/conf/kmod.mk already does 2000-10-03 20:05:36 +00:00
Makefile.pc98 Do not prepend DESTDIR' to KMODDIR' as sys/conf/kmod.mk already does 2000-10-03 20:05:36 +00:00
Makefile.powerpc Blah rev 1.208 got bits of the proposed "I want the file /kernel to be 2000-10-03 20:09:51 +00:00
newvers.sh Welcome to 5.0-current! 2000-03-13 09:13:01 +00:00
NOTES Initial commit of IFS - a inode-namespaced FFS. Here is a short 2000-10-14 03:02:30 +00:00
options Initial commit of IFS - a inode-namespaced FFS. Here is a short 2000-10-14 03:02:30 +00:00
options.alpha Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
options.i386 update to i4b version 0.95.04 2000-10-09 13:41:07 +00:00
options.ia64 This is the first snapshot of the FreeBSD/ia64 kernel. This kernel will 2000-09-29 13:46:07 +00:00
options.pc98 Merged from sys/conf/{files.i386,options.i386} revisions 1.334 and 2000-10-10 08:12:15 +00:00
param.c For lockmgr mutex protection, use an array of mutexes that are allocated 2000-10-12 22:37:28 +00:00
systags.sh $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00