linux/fs/exofs
Boaz Harrosh 06886a5a3d exofs: Move all operations to an io_engine
In anticipation for multi-device operations, we separate osd operations
into an abstract I/O API. Currently only one device is used but later
when adding more devices, we will drive all devices in parallel according
to a "data_map" that describes how data is arranged on multiple devices.
The file system level operates, like before, as if there is one object
(inode-number) and an i_size. The io engine will split this to the same
object-number but on multiple device.

At first we introduce Mirror (raid 1) layout. But at the final outcome
we intend to fully implement the pNFS-Objects data-map, including
raid 0,4,5,6 over mirrored devices, over multiple device-groups. And
more. See: http://tools.ietf.org/html/draft-ietf-nfsv4-pnfs-obj-12

* Define an io_state based API for accessing osd storage devices
  in an abstract way.
  Usage:
	First a caller allocates an io state with:
		exofs_get_io_state(struct exofs_sb_info *sbi,
				   struct exofs_io_state** ios);

	Then calles one of:
		exofs_sbi_create(struct exofs_io_state *ios);
		exofs_sbi_remove(struct exofs_io_state *ios);
		exofs_sbi_write(struct exofs_io_state *ios);
		exofs_sbi_read(struct exofs_io_state *ios);
		exofs_oi_truncate(struct exofs_i_info *oi, u64 new_len);

	And when done
		exofs_put_io_state(struct exofs_io_state *ios);

* Convert all source files to use this new API
* Convert from bio_alloc to bio_kmalloc
* In io engine we make use of the now fixed osd_req_decode_sense

There are no functional changes or on disk additions after this patch.

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
2009-12-10 09:59:22 +02:00
..
BUGS exofs: Documentation 2009-03-31 19:44:38 +03:00
Kbuild exofs: move osd.c to ios.c 2009-12-10 09:59:21 +02:00
Kconfig exofs: Kbuild, Headers and osd utils 2009-03-31 19:44:20 +03:00
common.h exofs: Move all operations to an io_engine 2009-12-10 09:59:22 +02:00
dir.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
exofs.h exofs: Move all operations to an io_engine 2009-12-10 09:59:22 +02:00
file.c exofs: Avoid using file_fsync() 2009-06-21 17:53:47 +03:00
inode.c exofs: Move all operations to an io_engine 2009-12-10 09:59:22 +02:00
ios.c exofs: Move all operations to an io_engine 2009-12-10 09:59:22 +02:00
namei.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
super.c exofs: Move all operations to an io_engine 2009-12-10 09:59:22 +02:00
symlink.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00