93fa58cb83
OVERVIEW V9FS is a distributed file system for Linux which provides an implementation of the Plan 9 resource sharing protocol 9P. It can be used to share all sorts of resources: static files, synthetic file servers (such as /proc or /sys), devices, and application file servers (such as FUSE). BACKGROUND Plan 9 (http://plan9.bell-labs.com/plan9) is a research operating system and associated applications suite developed by the Computing Science Research Center of AT&T Bell Laboratories (now a part of Lucent Technologies), the same group that developed UNIX , C, and C++. Plan 9 was initially released in 1993 to universities, and then made generally available in 1995. Its core operating systems code laid the foundation for the Inferno Operating System released as a product by Lucent Bell-Labs in 1997. The Inferno venture was the only commercial embodiment of Plan 9 and is currently maintained as a product by Vita Nuova (http://www.vitanuova.com). After updated releases in 2000 and 2002, Plan 9 was open-sourced under the OSI approved Lucent Public License in 2003. The Plan 9 project was started by Ken Thompson and Rob Pike in 1985. Their intent was to explore potential solutions to some of the shortcomings of UNIX in the face of the widespread use of high-speed networks to connect machines. In UNIX, networking was an afterthought and UNIX clusters became little more than a network of stand-alone systems. Plan 9 was designed from first principles as a seamless distributed system with integrated secure network resource sharing. Applications and services were architected in such a way as to allow for implicit distribution across a cluster of systems. Configuring an environment to use remote application components or services in place of their local equivalent could be achieved with a few simple command line instructions. For the most part, application implementations operated independent of the location of their actual resources. Commercial operating systems haven't changed much in the 20 years since Plan 9 was conceived. Network and distributed systems support is provided by a patchwork of middle-ware, with an endless number of packages supplying pieces of the puzzle. Matters are complicated by the use of different complicated protocols for individual services, and separate implementations for kernel and application resources. The V9FS project (http://v9fs.sourceforge.net) is an attempt to bring Plan 9's unified approach to resource sharing to Linux and other operating systems via support for the 9P2000 resource sharing protocol. V9FS HISTORY V9FS was originally developed by Ron Minnich and Maya Gokhale at Los Alamos National Labs (LANL) in 1997. In November of 2001, Greg Watson setup a SourceForge project as a public repository for the code which supported the Linux 2.4 kernel. About a year ago, I picked up the initial attempt Ron Minnich had made to provide 2.6 support and got the code integrated into a 2.6.5 kernel. I then went through a line-for-line re-write attempting to clean-up the code while more closely following the Linux Kernel style guidelines. I co-authored a paper with Ron Minnich on the V9FS Linux support including performance comparisons to NFSv3 using Bonnie and PostMark - this paper appeared at the USENIX/FREENIX 2005 conference in April 2005: ( http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html ). CALL FOR PARTICIPATION/REQUEST FOR COMMENTS Our 2.6 kernel support is stabilizing and we'd like to begin pursuing its integration into the official kernel tree. We would appreciate any review, comments, critiques, and additions from this community and are actively seeking people to join our project and help us produce something that would be acceptable and useful to the Linux community. STATUS The code is reasonably stable, although there are no doubt corner cases our regression tests haven't discovered yet. It is in regular use by several of the developers and has been tested on x86 and PowerPC (32-bit and 64-bit) in both small and large (LANL cluster) deployments. Our current regression tests include fsx, bonnie, and postmark. It was our intention to keep things as simple as possible for this release -- trying to focus on correctness within the core of the protocol support versus a rich set of features. For example: a more complete security model and cache layer are in the road map, but excluded from this release. Additionally, we have removed support for mmap operations at Al Viro's request. PERFORMANCE Detailed performance numbers and analysis are included in the FREENIX paper, but we show comparable performance to NFSv3 for large file operations based on the Bonnie benchmark, and superior performance for many small file operations based on the PostMark benchmark. Somewhat preliminary graphs (from the FREENIX paper) are available (http://v9fs.sourceforge.net/perf/index.html). RESOURCES The source code is available in a few different forms: tarballs: http://v9fs.sf.net CVSweb: http://cvs.sourceforge.net/viewcvs.py/v9fs/linux-9p/ CVS: :pserver:anonymous@cvs.sourceforge.net:/cvsroot/v9fs/linux-9p Git: rsync://v9fs.graverobber.org/v9fs (webgit: http://v9fs.graverobber.org) 9P: tcp!v9fs.graverobber.org!6564 The user-level server is available from either the Plan 9 distribution or from http://v9fs.sf.net Other support applications are still being developed, but preliminary version can be downloaded from sourceforge. Documentation on the protocol has historically been the Plan 9 Man pages (http://plan9.bell-labs.com/sys/man/5/INDEX.html), but there is an effort under way to write a more complete Internet-Draft style specification (http://v9fs.sf.net/rfc). There are a couple of mailing lists supporting v9fs, but the most used is v9fs-developer@lists.sourceforge.net -- please direct/cc your comments there so the other v9fs contibutors can participate in the conversation. There is also an IRC channel: irc://freenode.net/#v9fs This part of the patch contains Documentation, Makefiles, and configuration file changes. Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
102 lines
3.2 KiB
Makefile
102 lines
3.2 KiB
Makefile
#
|
|
# Makefile for the Linux filesystems.
|
|
#
|
|
# 14 Sep 2000, Christoph Hellwig <hch@infradead.org>
|
|
# Rewritten to use lists instead of if-statements.
|
|
#
|
|
|
|
obj-y := open.o read_write.o file_table.o buffer.o bio.o super.o \
|
|
block_dev.o char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
|
|
ioctl.o readdir.o select.o fifo.o locks.o dcache.o inode.o \
|
|
attr.o bad_inode.o file.o filesystems.o namespace.o aio.o \
|
|
seq_file.o xattr.o libfs.o fs-writeback.o mpage.o direct-io.o \
|
|
ioprio.o
|
|
|
|
obj-$(CONFIG_INOTIFY) += inotify.o
|
|
obj-$(CONFIG_EPOLL) += eventpoll.o
|
|
obj-$(CONFIG_COMPAT) += compat.o
|
|
|
|
nfsd-$(CONFIG_NFSD) := nfsctl.o
|
|
obj-y += $(nfsd-y) $(nfsd-m)
|
|
|
|
obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o
|
|
obj-$(CONFIG_BINFMT_EM86) += binfmt_em86.o
|
|
obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o
|
|
|
|
# binfmt_script is always there
|
|
obj-y += binfmt_script.o
|
|
|
|
obj-$(CONFIG_BINFMT_ELF) += binfmt_elf.o
|
|
obj-$(CONFIG_BINFMT_ELF_FDPIC) += binfmt_elf_fdpic.o
|
|
obj-$(CONFIG_BINFMT_SOM) += binfmt_som.o
|
|
obj-$(CONFIG_BINFMT_FLAT) += binfmt_flat.o
|
|
|
|
obj-$(CONFIG_FS_MBCACHE) += mbcache.o
|
|
obj-$(CONFIG_FS_POSIX_ACL) += posix_acl.o xattr_acl.o
|
|
obj-$(CONFIG_NFS_COMMON) += nfs_common/
|
|
|
|
obj-$(CONFIG_QUOTA) += dquot.o
|
|
obj-$(CONFIG_QFMT_V1) += quota_v1.o
|
|
obj-$(CONFIG_QFMT_V2) += quota_v2.o
|
|
obj-$(CONFIG_QUOTACTL) += quota.o
|
|
|
|
obj-$(CONFIG_DNOTIFY) += dnotify.o
|
|
|
|
obj-$(CONFIG_PROC_FS) += proc/
|
|
obj-y += partitions/
|
|
obj-$(CONFIG_SYSFS) += sysfs/
|
|
obj-y += devpts/
|
|
|
|
obj-$(CONFIG_PROFILING) += dcookies.o
|
|
|
|
# Do not add any filesystems before this line
|
|
obj-$(CONFIG_REISERFS_FS) += reiserfs/
|
|
obj-$(CONFIG_EXT3_FS) += ext3/ # Before ext2 so root fs can be ext3
|
|
obj-$(CONFIG_JBD) += jbd/
|
|
obj-$(CONFIG_EXT2_FS) += ext2/
|
|
obj-$(CONFIG_CRAMFS) += cramfs/
|
|
obj-$(CONFIG_RAMFS) += ramfs/
|
|
obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
|
|
obj-$(CONFIG_CODA_FS) += coda/
|
|
obj-$(CONFIG_MINIX_FS) += minix/
|
|
obj-$(CONFIG_FAT_FS) += fat/
|
|
obj-$(CONFIG_MSDOS_FS) += msdos/
|
|
obj-$(CONFIG_VFAT_FS) += vfat/
|
|
obj-$(CONFIG_BFS_FS) += bfs/
|
|
obj-$(CONFIG_ISO9660_FS) += isofs/
|
|
obj-$(CONFIG_DEVFS_FS) += devfs/
|
|
obj-$(CONFIG_HFSPLUS_FS) += hfsplus/ # Before hfs to find wrapped HFS+
|
|
obj-$(CONFIG_HFS_FS) += hfs/
|
|
obj-$(CONFIG_VXFS_FS) += freevxfs/
|
|
obj-$(CONFIG_NFS_FS) += nfs/
|
|
obj-$(CONFIG_EXPORTFS) += exportfs/
|
|
obj-$(CONFIG_NFSD) += nfsd/
|
|
obj-$(CONFIG_LOCKD) += lockd/
|
|
obj-$(CONFIG_NLS) += nls/
|
|
obj-$(CONFIG_SYSV_FS) += sysv/
|
|
obj-$(CONFIG_SMB_FS) += smbfs/
|
|
obj-$(CONFIG_CIFS) += cifs/
|
|
obj-$(CONFIG_NCP_FS) += ncpfs/
|
|
obj-$(CONFIG_HPFS_FS) += hpfs/
|
|
obj-$(CONFIG_NTFS_FS) += ntfs/
|
|
obj-$(CONFIG_UFS_FS) += ufs/
|
|
obj-$(CONFIG_EFS_FS) += efs/
|
|
obj-$(CONFIG_JFFS_FS) += jffs/
|
|
obj-$(CONFIG_JFFS2_FS) += jffs2/
|
|
obj-$(CONFIG_AFFS_FS) += affs/
|
|
obj-$(CONFIG_ROMFS_FS) += romfs/
|
|
obj-$(CONFIG_QNX4FS_FS) += qnx4/
|
|
obj-$(CONFIG_AUTOFS_FS) += autofs/
|
|
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
|
|
obj-$(CONFIG_ADFS_FS) += adfs/
|
|
obj-$(CONFIG_UDF_FS) += udf/
|
|
obj-$(CONFIG_RELAYFS_FS) += relayfs/
|
|
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
|
|
obj-$(CONFIG_JFS_FS) += jfs/
|
|
obj-$(CONFIG_XFS_FS) += xfs/
|
|
obj-$(CONFIG_9P_FS) += 9p/
|
|
obj-$(CONFIG_AFS_FS) += afs/
|
|
obj-$(CONFIG_BEFS_FS) += befs/
|
|
obj-$(CONFIG_HOSTFS) += hostfs/
|
|
obj-$(CONFIG_HPPFS) += hppfs/
|
|
obj-$(CONFIG_DEBUG_FS) += debugfs/
|