===============================================================================
WHAT IS EXOFS?
===============================================================================

exofs is a file system that uses an OSD and exports the API of a normal Linux
file system. Users access exofs like any other local file system, and exofs
will in turn issue commands to the local OSD initiator.

OSD is a new T10 command set that views storage devices not as a large/flat
array of sectors but as a container of objects, each having a length, quota,
time attributes and more. Each object is addressed by a 64bit ID, and is
contained in a 64bit ID partition. Each object has associated attributes
attached to it, which are integral part of the object and provide metadata about
the object. The standard defines some common obligatory attributes, but user
attributes can be added as needed.

===============================================================================
ENVIRONMENT
===============================================================================

To use this file system, you need to have an object store to run it on.  You
may download a target from:
http://open-osd.org

See Documentation/scsi/osd.txt for how to setup a working osd environment.

===============================================================================
USAGE
===============================================================================

1. Download and compile exofs and open-osd initiator:
  You need an external Kernel source tree or kernel headers from your
  distribution. (anything based on 2.6.26 or later).

  a. download open-osd including exofs source using:
     [parent-directory]$ git clone git://git.open-osd.org/open-osd.git

  b. Build the library module like this:
     [parent-directory]$ make -C KSRC=$(KER_DIR) open-osd

     This will build both the open-osd initiator as well as the exofs kernel
     module. Use whatever parameters you compiled your Kernel with and
     $(KER_DIR) above pointing to the Kernel you compile against. See the file
     open-osd/top-level-Makefile for an example.

2. Get the OSD initiator and target set up properly, and login to the target.
  See Documentation/scsi/osd.txt for farther instructions. Also see ./do-osd
  for example script that does all these steps.

3. Insmod the exofs.ko module:
   [exofs]$ insmod exofs.ko

4. Make sure the directory where you want to mount exists. If not, create it.
   (For example, mkdir /mnt/exofs)

5. At first run you will need to invoke the mkfs.exofs application

   As an example, this will create the file system on:
   /dev/osd0 partition ID 65536

   mkfs.exofs --pid=65536 --format /dev/osd0

   The --format is optional if not specified no OSD_FORMAT will be
   preformed and a clean file system will be created in the specified pid,
   in the available space of the target. (Use --format=size_in_meg to limit
   the total LUN space available)

   If pid already exist it will be deleted and a new one will be created in it's
   place. Be careful.

   An exofs lives inside a single OSD partition. You can create multiple exofs
   filesystems on the same device using multiple pids.

   (run mkfs.exofs without any parameters for usage help message)

6. Mount the file system.

   For example, to mount /dev/osd0, partition ID 0x10000 on /mnt/exofs:

	mount -t exofs -o pid=65536 /dev/osd0 /mnt/exofs/

7. For reference (See do-exofs example script):
	do-exofs start - an example of how to perform the above steps.
	do-exofs stop -  an example of how to unmount the file system.
	do-exofs format - an example of how to format and mkfs a new exofs.

8. Extra compilation flags (uncomment in fs/exofs/Kbuild):
	CONFIG_EXOFS_DEBUG - for debug messages and extra checks.

===============================================================================
exofs mount options
===============================================================================
Similar to any mount command:
	mount -t exofs -o exofs_options /dev/osdX mount_exofs_directory

Where:
    -t exofs: specifies the exofs file system

    /dev/osdX: X is a decimal number. /dev/osdX was created after a successful
               login into an OSD target.

    mount_exofs_directory: The directory to mount the file system on

    exofs specific options: Options are separated by commas (,)
		pid=<integer> - The partition number to mount/create as
                                container of the filesystem.
                                This option is mandatory
                to=<integer>  - Timeout in ticks for a single command
                                default is (60 * HZ) [for debugging only]

===============================================================================
DESIGN
===============================================================================

* The file system control block (AKA on-disk superblock) resides in an object
  with a special ID (defined in common.h).
  Information included in the file system control block is used to fill the
  in-memory superblock structure at mount time. This object is created before
  the file system is used by mkexofs.c It contains information such as:
	- The file system's magic number
	- The next inode number to be allocated

* Each file resides in its own object and contains the data (and it will be
  possible to extend the file over multiple objects, though this has not been
  implemented yet).

* A directory is treated as a file, and essentially contains a list of <file
  name, inode #> pairs for files that are found in that directory. The object
  IDs correspond to the files' inode numbers and will be allocated according to
  a bitmap (stored in a separate object). Now they are allocated using a
  counter.

* Each file's control block (AKA on-disk inode) is stored in its object's
  attributes. This applies to both regular files and other types (directories,
  device files, symlinks, etc.).

* Credentials are generated per object (inode and superblock) when they is
  created in memory (read off disk or created). The credential works for all
  operations and is used as long as the object remains in memory.

* Async OSD operations are used whenever possible, but the target may execute
  them out of order. The operations that concern us are create, delete,
  readpage, writepage, update_inode, and truncate. The following pairs of
  operations should execute in the order written, and we need to prevent them
  from executing in reverse order:
	- The following are handled with the OBJ_CREATED and OBJ_2BCREATED
	  flags. OBJ_CREATED is set when we know the object exists on the OSD -
	  in create's callback function, and when we successfully do a read_inode.
	  OBJ_2BCREATED is set in the beginning of the create function, so we
	  know that we should wait.
		- create/delete: delete should wait until the object is created
		  on the OSD.
		- create/readpage: readpage should be able to return a page
		  full of zeroes in this case. If there was a write already
		  en-route (i.e. create, writepage, readpage) then the page
		  would be locked, and so it would really be the same as
		  create/writepage.
		- create/writepage: if writepage is called for a sync write, it
		  should wait until the object is created on the OSD.
		  Otherwise, it should just return.
		- create/truncate: truncate should wait until the object is
		  created on the OSD.
		- create/update_inode: update_inode should wait until the
		  object is created on the OSD.
	- Handled by VFS locks:
		- readpage/delete: shouldn't happen because of page lock.
		- writepage/delete: shouldn't happen because of page lock.
		- readpage/writepage: shouldn't happen because of page lock.

===============================================================================
LICENSE/COPYRIGHT
===============================================================================
The exofs file system is based on ext2 v0.5b (distributed with the Linux kernel
version 2.6.10).  All files include the original copyrights, and the license
is GPL version 2 (only version 2, as is true for the Linux kernel).  The
Linux kernel can be downloaded from www.kernel.org.
