Recent Edits
The current source code for v9fs is maintained here: http://git.kernel.org/?p=linux/kernel/git/ericvh/v9fs.git;a=summary
The...
» complete change!{margin:0 auto; display:block; float:right; padding:1em;}http://v9fs.sourceforge.net/tuxbunnysuit.jpg!
v9fs provides a [[Plan9]] 9P2000 resource sharing protocol client for the [[Linux]] 2.6 kernel. The source code has been maintained as part of the main-line kernel since 2.6.14 with bugtracking through bugzilla org. Normal [[plan9]] servers will work with v9fs, but for folks looking for a Linux-based server we have moved towards support the [[npfs]] libraries and applications.
v9fs was originally developed by Ron Minnich(rminnich%lanl.gov) and Maya Gokhale(maya%lanl.gov). Additional development by Greg Watson(gwatson%lanl.gov) and most recently Eric Van Hensbergen(ericvh%gmail.com).
The 2.6 port of V9FS and performance analysis was supported in part by the Defense Advance Research Projects Agency under Contract No. NBCH30390004. The original V9FS research work by Ron Minnich was supported by DARPA Contract #F30602-96-C-0297.
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured "here":http://git.kernel.org/?p=linux/kernel/git/ericvh/v9fs.git;a=blob_plain;f=Documentation/filesystems/9p.txt;hb=HEAD
The current source code for v9fs is maintained here: http://git.kernel.org/?p=linux/kernel/git/ericvh/v9fs.git;a=summary
The master branch contains the latest tested stable version. The v9fs-devel branch contains the current development branch.
* Mount helper application (userspace)
** providing DNS resolution, id mapping, and security hooks
** optionalize linkage with...
* Mount helper application (userspace)
** providing DNS resolution, id mapping, and security hooks
** optionalize linkage with p9p authentication mechanisms
** zeroconf integration
** build-in support for ssh as transport
** document and package for distributions
* Userspace server (userspace)
** "Productize" existing userspace file server
** add maxclient limitations
** support directory restrictions
** authentication mechanisms
** id mapping mechanisms
** zeroconf integration
** document and package for distributions
* Userspace Filesystems (userspace)
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
** look for ways to improvide performance and scalability
* Security (kernel & userspace)
** Add security mechanisms for authentication, encryption, and/or digesting.
** idmapd based id mapping
* Cacheing (kernel)
** Add mechanisms in support of coherent cacheing
** delay-based loose coherence (ala NFSv3)
** call-back based leased coherence (ala AFS and NFSv4) (kernel & userspace)
** Integrating cacheing with the FS-cache project mechanisms.
* master: linus: will have a pristine linus tree.
* v9fs-devel: old-v9fs: will be (at least temporarily) hold the old v9fs-devel...
h1. Repository and Branches
I've created a new git repository
(/pub/scm/linux/kernel/git/ericvh/v9fs.git) to eventually replace v9fs-devel.git. This tree will be organized a bit differently with most stuff stored in the following branches:
* master: linus: will have a pristine linus tree.
* mm: will have the most recent andrew morton release.
* v9fs-devel: old-v9fs: will be (at least temporarily) hold the old v9fs-devel tree.
* test: will contain my development tree (which gets pulled into mm) current test branch (unstable)
* standalone-test: will contain a version of test with ifdefs to help compile on older kernels.
* release: will contain changes which have passed our regression suite.
* for-linus: standalone: will contain a version of release with ifdefs to help compile on older kernels.
The fs/9p directory of the standalone trees will be patches snapshotted in sf.net CVS under linux-9p on a somewhat regular basis for linus folks that want to only build the module.
Most folks will probably only want to pull during merge windows deal with the release branch or grabbing the standalone branch from CVS.
h1. Regression Testing
Right now we request folks perform a sanity check on any changes by running the following benchmarks (available from v9fs CVS on sf.net under the test module):
mount -t 9P 127.0.0.1 /mnt/9
cd /mnt/9/var/tmp
fsx -N 100 -W -d testfile
Bonnie -s 1
echo run | postmark
ls -l
cd /
umount /mnt/9
A more complicated regression suite is being developed and it will be distributed (along with scripts which run it) shortly. We also request that folks run their builds with Sparse (C=1) to make sure the build is _really_ clean.
h1. Patch Acceptance/Test Process
Please generate patch files with git (git-format-patch-script) and inline email them to v9fs-developer. These patches will go in my patch queue and eventually be merged first into the test branch for baseline regression. Patches passing baseline regression will be merged into the release branch for more thorough testing by the v9fs community, and then be sent as patches to LKML.
h1. Code Style
Follow the Linux kernel guidelines found in Documentation/CodingStyle.
* [[v9fs packaging]] - rolling packages for distros (need volunteers)
* a new server infrastructure
* [[v9fs Security Support]]...
* [[v9fs packaging]] - rolling packages for distros (need volunteers)
* a new server infrastructure
* [[v9fs Security Support]]
* [[v9fs Cache Infrastructure]]
----
*Eric's Work Queue*
| # | *Description* | *Progress* |
| 1 | reorganization | ongoing |
----
*Current Patch Queue (Waiting to be merged into test)*
| *Date Submitted* | *Description* | *Submitter* |
| 1 | reorganization regression in 2.6.21 | ongoing |
| 2 | automated regressions in mambo | 0% |
| 3 | exportfs in-kernel server...
* [[v9fs packaging]] - rolling packages for distros (need volunteers)
* a new server infrastructure
* [[v9fs Security Support]]
* [[v9fs Cache Infrastructure]]
----
*Eric's Work Queue*
| # | *Description* | *Progress* |
| 1 | reorganization regression in 2.6.21 | ongoing |
| 2 | automated regressions in mambo | 0% |
| 3 | exportfs in-kernel server | 0% |
----
*Current Patch Queue (Waiting to be merged into test)*
| *Date Submitted* | *Description* | *Submitter* |
(the most recent version of this documentation can be found in the kernel docs in the Linux source tree under Documentation/filesystems/9p.txt)...
(the most recent version of this documentation can be found in the kernel docs in the Linux source tree under Documentation/filesystems/9p.txt)
h1. ABOUT
v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
This software was originally developed by Ron Minnich <rminnich@sandia.gov>
and Maya Gokhale. Additional development by Greg Watson
<gwatson@lanl.gov> and most recently Eric Van Hensbergen
<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
<rsc@swtch.com>.
The best detailed explanation of the Linux implementation and applications of
the 9p client is available in the form of a USENIX paper:
http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
Other applications are described in the following papers:
* XCPU & Clustering
http://www.xcpu.org/xcpu-talk.pdf
* KVMFS: control file system for KVM
http://www.xcpu.org/kvmfs.pdf
* CellFS: A New ProgrammingModel for the Cell BE
http://www.xcpu.org/cellfs-talk.pdf
* PROSE I/O: Using 9p to enable Application Partitions
http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
h1. Usage
For remote file server:
mount -t 9p 10.10.1.2 /mnt/9
For Plan 9 From User Space applications (http://swtch.com/plan9)
mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
h1. Options
<pre>
proto=name select an alternative transport. Valid options are
currently:
unix - specifying a named pipe mount point
tcp - specifying a normal TCP/IP connection
fd - used passed file descriptors for connection
(see rfdno and wfdno)
uname=name user name to attempt mount as on the remote server. The
server may override or ignore this value. Certain user
names may require authentication.
aname=name aname specifies the file tree to access when the server is
offering several exported file systems.
cache=mode specifies a cacheing policy. By default, no caches are used.
loose = no attempts are made at consistency,
intended for exclusive, read-only mounts
debug=n specifies debug level. The debug level is a bitmask.
0x01 = display verbose error messages
0x02 = developer debug (DEBUG_CURRENT)
0x04 = display 9p trace
0x08 = display VFS trace
0x10 = display Marshalling debug
0x20 = display RPC debug
0x40 = display transport debug
0x80 = display allocation debug
rfdno=n the file descriptor for reading with proto=fd
wfdno=n the file descriptor for writing with proto=fd
maxdata=n the number of bytes to use for 9p packet payload (msize)
port=n port to connect to on the remote server
noextend force legacy mode (no 9p2000.u semantics)
uid attempt to mount as a particular uid
gid attempt to mount with a particular gid
afid security channel - used by Plan 9 authentication protocols
nodevmap do not map special files - represent them as normal files.
This can be used to share devices/named pipes/sockets between
hosts. This functionality will be expanded in later versions.
</pre>
h1. Resources
Our current recommendation is to use Inferno (http://www.vitanuova.com/inferno)
as the 9p server. You can start a 9p server under Inferno by issuing the
following command:
<pre>
; styxlisten -A tcp!*!564 export '#U*'
</pre>
The -A specifies an unauthenticated export. The 564 is the port # (you may
have to choose a higher port number if running as a normal user). The #U*
specifies exporting the root of the Linux name space. You may specify a
subset of the namespace by extending the path: '#U*'/tmp would just export
/tmp. For more information, see the Inferno manual pages covering styxlisten
and export.
A Linux version of the 9p server is now maintained under the npfs project
on sourceforge (http://sourceforge.net/projects/npfs). The currently
maintained version is the single-threaded version of the server (named spfs)
available from the same CVS repository.
There are user and developer mailing lists available through the v9fs project
on sourceforge (http://sourceforge.net/projects/v9fs).
News and other information is maintained on SWiK (http://swik.net/v9fs).
Bug reports may be issued through the kernel.org bugzilla
(http://bugzilla.kernel.org)
For more information on the Plan 9 Operating System check out
http://plan9.bell-labs.com/plan9
For information on Plan 9 from User Space (Plan 9 applications and libraries
ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9
h1. Status
The 2.6 kernel support is working on PPC and x86.
PLEASE USE THE KERNEL BUGZILLA TO REPORT PROBLEMS. (http://bugzilla.kernel.org)
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured "here":http://git.kernel.org/?p=linux/kernel/git/ericvh/v9fs.git;a=blob_plain;f=Documentation/filesystems/9p.txt;hb=HEAD...
» complete change!{margin:0 auto; display:block; float:right; padding:1em;}http://v9fs.sourceforge.net/tuxbunnysuit.jpg!
v9fs provides a [[Plan9]] 9P2000 resource sharing protocol client for the [[Linux]] 2.6 kernel. The source code has been maintained as part of the main-line kernel since 2.6.14 with bugtracking through bugzilla org. Normal [[plan9]] servers will work with v9fs, but for folks looking for a Linux-based server we have moved towards support the [[npfs]] libraries and applications.
v9fs was originally developed by Ron Minnich(rminnich%lanl.gov) and Maya Gokhale(maya%lanl.gov). Additional development by Greg Watson(gwatson%lanl.gov) and most recently Eric Van Hensbergen(ericvh%gmail.com).
The 2.6 port of V9FS and performance analysis was supported in part by the Defense Advance Research Projects Agency under Contract No. NBCH30390004. The original V9FS research work by Ron Minnich was supported by DARPA Contract #F30602-96-C-0297.
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured "here":http://git.kernel.org/?p=linux/kernel/git/ericvh/v9fs.git;a=blob_plain;f=Documentation/filesystems/9p.txt;hb=HEAD here: [v9fs+HOWTO].
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured here:...
» complete change!{margin:0 auto; display:block; float:right; padding:1em;}http://v9fs.sourceforge.net/tuxbunnysuit.jpg!
v9fs provides a [[Plan9]] 9P2000 resource sharing protocol client for the [[Linux]] 2.6 kernel. The source code has been maintained as part of the main-line kernel since 2.6.14 with bugtracking through bugzilla org. Normal [[plan9]] servers will work with v9fs, but for folks looking for a Linux-based server we have moved towards support the [[npfs]] libraries and applications.
v9fs was originally developed by Ron Minnich(rminnich%lanl.gov) and Maya Gokhale(maya%lanl.gov). Additional development by Greg Watson(gwatson%lanl.gov) and most recently Eric Van Hensbergen(ericvh%gmail.com).
The 2.6 port of V9FS and performance analysis was supported in part by the Defense Advance Research Projects Agency under Contract No. NBCH30390004. The original V9FS research work by Ron Minnich was supported by DARPA Contract #F30602-96-C-0297.
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured here: [v9fs+HOWTO]. [[v9fs+HOWTO]].
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured here:...
» complete change!{margin:0 auto; display:block; float:right; padding:1em;}http://v9fs.sourceforge.net/tuxbunnysuit.jpg!
v9fs provides a [[Plan9]] 9P2000 resource sharing protocol client for the [[Linux]] 2.6 kernel. The source code has been maintained as part of the main-line kernel since 2.6.14 with bugtracking through bugzilla org. Normal [[plan9]] servers will work with v9fs, but for folks looking for a Linux-based server we have moved towards support the [[npfs]] libraries and applications.
v9fs was originally developed by Ron Minnich(rminnich%lanl.gov) and Maya Gokhale(maya%lanl.gov). Additional development by Greg Watson(gwatson%lanl.gov) and most recently Eric Van Hensbergen(ericvh%gmail.com).
The 2.6 port of V9FS and performance analysis was supported in part by the Defense Advance Research Projects Agency under Contract No. NBCH30390004. The original V9FS research work by Ron Minnich was supported by DARPA Contract #F30602-96-C-0297.
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured here: [[v9fs+HOWTO]]. [[v9fs HOWTO]].
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured here:...
» complete change!{margin:0 auto; display:block; float:right; padding:1em;}http://v9fs.sourceforge.net/tuxbunnysuit.jpg!
v9fs provides a [[Plan9]] 9P2000 resource sharing protocol client for the [[Linux]] 2.6 kernel. The source code has been maintained as part of the main-line kernel since 2.6.14 with bugtracking through bugzilla org. Normal [[plan9]] servers will work with v9fs, but for folks looking for a Linux-based server we have moved towards support the [[npfs]] libraries and applications.
v9fs was originally developed by Ron Minnich(rminnich%lanl.gov) and Maya Gokhale(maya%lanl.gov). Additional development by Greg Watson(gwatson%lanl.gov) and most recently Eric Van Hensbergen(ericvh%gmail.com).
The 2.6 port of V9FS and performance analysis was supported in part by the Defense Advance Research Projects Agency under Contract No. NBCH30390004. The original V9FS research work by Ron Minnich was supported by DARPA Contract #F30602-96-C-0297.
Documentation can be found in the Linux kernel source under Documentation/filesystems/9p.txt with a snapshot captured here: [[v9fs HOWTO]].
For remote file server (can't use DNS host names, only dot-quadded ip addresses):
<pre>
mount -t 9p 10.10.1.2 /mnt/9
</pre>
For...
For remote file server (can't use DNS host names, only dot-quadded ip addresses):
<pre>
mount -t 9p 10.10.1.2 /mnt/9
</pre>
For Plan 9 From User Space applications (http://swtch.com/plan9)
<pre>
mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
</pre>
<h2>OPTIONS</h2>
<ul>
<li><tt>proto=<i>name</i></tt> - select an alternative transport. Valid options are currently:
<ul>
<li><tt>unix</tt> - specifying a named pipe mount point</li>
<li><tt>tcp</tt> - specifying a normal TCP/IP connection</li>
<li><tt>fd</tt> - used passed file descriptors for connection (see rfdno and wfdno)</li>
</ul>
</li>
<li>
<tt>uname=<i>name</i></tt> - user name to attempt mount as on the remote server. The server may override or ignore this value. Certain user
names may require authentication.
</li>
<li>
<tt>aname=<i>name</i></tt> aname specifies the file tree to access when the server is offering several exported file systems.
</li>
<li>
<tt>debug=</i>n</i></tt> specifies debug level. The debug level is a bitmask.
<ul>
<li><tt>0x01</tt> - display verbose error messages</li>
<li><tt>0x02</tt> - developer debug (DEBUG_CURRENT)</li>
<li><tt>0x04</tt> - display 9p trace</li>
<li><tt>0x08</tt> - display VFS trace</li>
<li><tt>0x10</tt> - display Marshalling debug</li>
<li><tt>0x20</tt> - display RPC debug</li>
<li><tt>0x40</tt> - display transport debug</li>
<li><tt>0x80</tt> - display allocation debug</li>
</ul>
</li>
<li><tt>rfdno=<i>n</i></tt> - the file descriptor for reading with proto=fd</li>
<li><tt>wfdno=<i>n</i></tt> - the file descriptor for writing with proto=fd</li>
<li><tt>maxdata=<i>n</i></tt> - the number of bytes to use for 9p packet payload (msize)</li>
<li><tt>port=<i>n</i></tt> - port to connect to on the remote server</li>
<li><tt>noextend</tt> - force legacy mode (no 9p2000.u semantics)</li>
<li><tt>uid</tt> - attempt to mount as a particular uid</li>
<li><tt>gid</tt> - attempt to mount with a particular gid</li>
<li><tt>afid</tt> - security channel - used by Plan 9 authentication protocols</li>
<li><tt>nodevmap</tt> - do not map special files - represent them as normal files.
This can be used to share devices/named pipes/sockets between
hosts. This functionality will be expanded in later versions.
</li>
</ul>
<pre>
proto=name select an alternative transport. Valid options are
hosts. This functionality will be expanded in later versions....
» complete change(the most recent version of this documentation can be found in the kernel docs in the Linux source tree under Documentation/filesystems/9p.txt)
h1. ABOUT
v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
This software was originally developed by Ron Minnich <rminnich@sandia.gov>
and Maya Gokhale. Additional development by Greg Watson
<gwatson@lanl.gov> and most recently Eric Van Hensbergen
<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
<rsc@swtch.com>.
The best detailed explanation of the Linux implementation and applications of
the 9p client is available in the form of a USENIX paper:
http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
Other applications are described in the following papers:
* XCPU & Clustering
http://www.xcpu.org/xcpu-talk.pdf
* KVMFS: control file system for KVM
http://www.xcpu.org/kvmfs.pdf
* CellFS: A New ProgrammingModel for the Cell BE
http://www.xcpu.org/cellfs-talk.pdf
* PROSE I/O: Using 9p to enable Application Partitions
http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
h1. Usage
For remote file server:
mount -t 9p 10.10.1.2 /mnt/9
For Plan 9 From User Space applications (http://swtch.com/plan9)
mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
h1. Options
<pre>
proto=name select an alternative transport. Valid options are
currently:
unix - specifying a named pipe mount point
tcp - specifying a normal TCP/IP connection
fd - used passed file descriptors for connection
(see rfdno and wfdno)
uname=name user name to attempt mount as on the remote server. The
server may override or ignore this value. Certain user
names may require authentication.
aname=name aname specifies the file tree to access when the server is
offering several exported file systems.
cache=mode specifies a cacheing policy. By default, no caches are used.
loose = no attempts are made at consistency,
intended for exclusive, read-only mounts
debug=n specifies debug level. The debug level is a bitmask.
0x01 = display verbose error messages
0x02 = developer debug (DEBUG_CURRENT)
0x04 = display 9p trace
0x08 = display VFS trace
0x10 = display Marshalling debug
0x20 = display RPC debug
0x40 = display transport debug
0x80 = display allocation debug
rfdno=n the file descriptor for reading with proto=fd
wfdno=n the file descriptor for writing with proto=fd
maxdata=n the number of bytes to use for 9p packet payload (msize)
port=n port to connect to on the remote server
noextend force legacy mode (no 9p2000.u semantics)
uid attempt to mount as a particular uid
gid attempt to mount with a particular gid
afid security channel - used by Plan 9 authentication protocols
nodevmap do not map special files - represent them as normal files.
This can be used to share devices/named pipes/sockets between
hosts. This functionality will be expanded in later versions.
</pre>
h1. Resources
Our current recommendation is to use Inferno (http://www.vitanuova.com/inferno)
as the 9p server. You can start a 9p server under Inferno by issuing the
following command:
<pre>
; styxlisten -A tcp!*!564 export '#U*'
</pre>
The -A specifies an unauthenticated export. The 564 is the port # (you may
have to choose a higher port number if running as a normal user). The #U* '#U*'
specifies exporting the root of the Linux name space. You may specify a
subset of the namespace by extending the path: '#U*'/tmp would just export
/tmp. For more information, see the Inferno manual pages covering styxlisten
and export.
A Linux version of the 9p server is now maintained under the npfs project
on sourceforge (http://sourceforge.net/projects/npfs). The currently
maintained version is the single-threaded version of the server (named spfs)
available from the same CVS repository.
There are user and developer mailing lists available through the v9fs project
on sourceforge (http://sourceforge.net/projects/v9fs).
News and other information is maintained on SWiK (http://swik.net/v9fs).
Bug reports may be issued through the kernel.org bugzilla
(http://bugzilla.kernel.org)
For more information on the Plan 9 Operating System check out
http://plan9.bell-labs.com/plan9
For information on Plan 9 from User Space (Plan 9 applications and libraries
ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9
h1. Status
The 2.6 kernel support is working on PPC and x86.
PLEASE USE THE KERNEL BUGZILLA TO REPORT PROBLEMS. (http://bugzilla.kernel.org)
<pre>
proto=name select an alternative transport. Valid options are
hosts. This functionality will be expanded in later versions....
» complete change(the most recent version of this documentation can be found in the kernel docs in the Linux source tree under Documentation/filesystems/9p.txt)
h1. ABOUT
v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
This software was originally developed by Ron Minnich <rminnich@sandia.gov>
and Maya Gokhale. Additional development by Greg Watson
<gwatson@lanl.gov> and most recently Eric Van Hensbergen
<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
<rsc@swtch.com>.
The best detailed explanation of the Linux implementation and applications of
the 9p client is available in the form of a USENIX paper:
http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
Other applications are described in the following papers:
* XCPU & Clustering
http://www.xcpu.org/xcpu-talk.pdf
* KVMFS: control file system for KVM
http://www.xcpu.org/kvmfs.pdf
* CellFS: A New ProgrammingModel for the Cell BE
http://www.xcpu.org/cellfs-talk.pdf
* PROSE I/O: Using 9p to enable Application Partitions
http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
h1. Usage
For remote file server:
mount -t 9p 10.10.1.2 /mnt/9
For Plan 9 From User Space applications (http://swtch.com/plan9)
mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
h1. Options
<pre>
proto=name select an alternative transport. Valid options are
currently:
unix - specifying a named pipe mount point
tcp - specifying a normal TCP/IP connection
fd - used passed file descriptors for connection
(see rfdno and wfdno)
uname=name user name to attempt mount as on the remote server. The
server may override or ignore this value. Certain user
names may require authentication.
aname=name aname specifies the file tree to access when the server is
offering several exported file systems.
cache=mode specifies a cacheing policy. By default, no caches are used.
loose = no attempts are made at consistency,
intended for exclusive, read-only mounts
debug=n specifies debug level. The debug level is a bitmask.
0x01 = display verbose error messages
0x02 = developer debug (DEBUG_CURRENT)
0x04 = display 9p trace
0x08 = display VFS trace
0x10 = display Marshalling debug
0x20 = display RPC debug
0x40 = display transport debug
0x80 = display allocation debug
rfdno=n the file descriptor for reading with proto=fd
wfdno=n the file descriptor for writing with proto=fd
maxdata=n the number of bytes to use for 9p packet payload (msize)
port=n port to connect to on the remote server
noextend force legacy mode (no 9p2000.u semantics)
uid attempt to mount as a particular uid
gid attempt to mount with a particular gid
afid security channel - used by Plan 9 authentication protocols
nodevmap do not map special files - represent them as normal files.
This can be used to share devices/named pipes/sockets between
hosts. This functionality will be expanded in later versions.
</pre>
h1. Resources
=========
Our current recommendation is to use Inferno (http://www.vitanuova.com/inferno)
as the 9p server. You can start a 9p server under Inferno by issuing the
following command:
; styxlisten -A tcp!*!564 export '#U*'
The -A specifies an unauthenticated export. The 564 is the port # (you may
have to choose a higher port number if running as a normal user). The '#U*'
specifies exporting the root of the Linux name space. You may specify a
subset of the namespace by extending the path: '#U*'/tmp would just export
/tmp. For more information, see the Inferno manual pages covering styxlisten
and export.
A Linux version of the 9p server is now maintained under the npfs project
on sourceforge (http://sourceforge.net/projects/npfs). The currently
maintained version is the single-threaded version of the server (named spfs)
available from the same CVS repository.
There are user and developer mailing lists available through the v9fs project
on sourceforge (http://sourceforge.net/projects/v9fs).
News and other information is maintained on SWiK (http://swik.net/v9fs).
Bug reports may be issued through the kernel.org bugzilla
(http://bugzilla.kernel.org)
For more information on the Plan 9 Operating System check out
http://plan9.bell-labs.com/plan9
For information on Plan 9 from User Space (Plan 9 applications and libraries
ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9
h1. Status
The 2.6 kernel support is working on PPC and x86.
PLEASE USE THE KERNEL BUGZILLA TO REPORT PROBLEMS. (http://bugzilla.kernel.org)
(the most recent version of this documentation can be found in the kernel docs in the Linux source tree under Documentation/filesystems/9p.txt)...
» complete change(the most recent version of this documentation can be found in the kernel docs in the Linux source tree under Documentation/filesystems/9p.txt)
h1. ABOUT
v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
This software was originally developed by Ron Minnich <rminnich@sandia.gov>
and Maya Gokhale. Additional development by Greg Watson
<gwatson@lanl.gov> and most recently Eric Van Hensbergen
<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
<rsc@swtch.com>.
The best detailed explanation of the Linux implementation and applications of
the 9p client is available in the form of a USENIX paper:
http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
Other applications are described in the following papers:
* XCPU & Clustering
http://www.xcpu.org/xcpu-talk.pdf
* KVMFS: control file system for KVM
http://www.xcpu.org/kvmfs.pdf
* CellFS: A New ProgrammingModel for the Cell BE
http://www.xcpu.org/cellfs-talk.pdf
* PROSE I/O: Using 9p to enable Application Partitions
http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
h1. Usage
For remote file server:
mount -t 9p 10.10.1.2 /mnt/9
For Plan 9 From User Space applications (http://swtch.com/plan9)
mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
h1. Options
<pre>
proto=name select an alternative transport. Valid options are
currently:
unix - specifying a named pipe mount point
tcp - specifying a normal TCP/IP connection
fd - used passed file descriptors for connection
(see rfdno and wfdno)
uname=name user name to attempt mount as on the remote server. The
server may override or ignore this value. Certain user
names may require authentication.
aname=name aname specifies the file tree to access when the server is
offering several exported file systems.
cache=mode specifies a cacheing policy. By default, no caches are used.
loose = no attempts are made at consistency,
intended for exclusive, read-only mounts
debug=n specifies debug level. The debug level is a bitmask.
0x01 = display verbose error messages
0x02 = developer debug (DEBUG_CURRENT)
0x04 = display 9p trace
0x08 = display VFS trace
0x10 = display Marshalling debug
0x20 = display RPC debug
0x40 = display transport debug
0x80 = display allocation debug
rfdno=n the file descriptor for reading with proto=fd
wfdno=n the file descriptor for writing with proto=fd
maxdata=n the number of bytes to use for 9p packet payload (msize)
port=n port to connect to on the remote server
noextend force legacy mode (no 9p2000.u semantics)
uid attempt to mount as a particular uid
gid attempt to mount with a particular gid
afid security channel - used by Plan 9 authentication protocols
nodevmap do not map special files - represent them as normal files.
This can be used to share devices/named pipes/sockets between
hosts. This functionality will be expanded in later versions.
</pre>
h1. Resources
=========
Our current recommendation is to use Inferno (http://www.vitanuova.com/inferno)
as the 9p server. You can start a 9p server under Inferno by issuing the
following command:
; styxlisten -A tcp!*!564 export '#U*'
The -A specifies an unauthenticated export. The 564 is the port # (you may
have to choose a higher port number if running as a normal user). The '#U*'
specifies exporting the root of the Linux name space. You may specify a
subset of the namespace by extending the path: '#U*'/tmp would just export
/tmp. For more information, see the Inferno manual pages covering styxlisten
and export.
A Linux version of the 9p server is now maintained under the npfs project
on sourceforge (http://sourceforge.net/projects/npfs). The currently
maintained version is the single-threaded version of the server (named spfs)
available from the same CVS repository.
There are user and developer mailing lists available through the v9fs project
on sourceforge (http://sourceforge.net/projects/v9fs).
News and other information is maintained on SWiK (http://swik.net/v9fs).
Bug reports may be issued through the kernel.org bugzilla
(http://bugzilla.kernel.org)
For more information on the Plan 9 Operating System check out
http://plan9.bell-labs.com/plan9
For information on Plan 9 from User Space (Plan 9 applications and libraries
ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9
h1. Status
The 2.6 kernel support is working on PPC and x86.
PLEASE USE THE KERNEL BUGZILLA TO REPORT PROBLEMS. (http://bugzilla.kernel.org)
v9fs mount options
For remote file server (can't use DNS host names, only dot-quadded ip addresses): server:
For remote file server (can't use DNS host names, only dot-quadded ip addresses): server:
<pre>
mount -t 9p 10.10.1.2 /mnt/9
</pre>
For Plan 9 From User Space applications (http://swtch.com/plan9)
<pre>
mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
</pre>
<h2>OPTIONS</h2>
<ul>
<li><tt>proto=<i>name</i></tt> - select an alternative transport. Valid options are currently:
<ul>
<li><tt>unix</tt> - specifying a named pipe mount point</li>
<li><tt>tcp</tt> - specifying a normal TCP/IP connection</li>
<li><tt>fd</tt> - used passed file descriptors for connection (see rfdno and wfdno)</li>
</ul>
</li>
<li>
<tt>uname=<i>name</i></tt> - user name to attempt mount as on the remote server. The server may override or ignore this value. Certain user
names may require authentication.
</li>
<li>
<tt>aname=<i>name</i></tt> aname specifies the file tree to access when the server is offering several exported file systems.
</li>
<li>
<tt>debug=</i>n</i></tt> specifies debug level. The debug level is a bitmask.
<ul>
<li><tt>0x01</tt> - display verbose error messages</li>
<li><tt>0x02</tt> - developer debug (DEBUG_CURRENT)</li>
<li><tt>0x04</tt> - display 9p trace</li>
<li><tt>0x08</tt> - display VFS trace</li>
<li><tt>0x10</tt> - display Marshalling debug</li>
<li><tt>0x20</tt> - display RPC debug</li>
<li><tt>0x40</tt> - display transport debug</li>
<li><tt>0x80</tt> - display allocation debug</li>
</ul>
</li>
<li><tt>rfdno=<i>n</i></tt> - the file descriptor for reading with proto=fd</li>
<li><tt>wfdno=<i>n</i></tt> - the file descriptor for writing with proto=fd</li>
<li><tt>maxdata=<i>n</i></tt> - the number of bytes to use for 9p packet payload (msize)</li>
<li><tt>port=<i>n</i></tt> - port to connect to on the remote server</li>
<li><tt>noextend</tt> - force legacy mode (no 9p2000.u semantics)</li>
<li><tt>uid</tt> - attempt to mount as a particular uid</li>
<li><tt>gid</tt> - attempt to mount with a particular gid</li>
<li><tt>afid</tt> - security channel - used by Plan 9 authentication protocols</li>
<li><tt>nodevmap</tt> - do not map special files - represent them as normal files.
This can be used to share devices/named pipes/sockets between
hosts. This functionality will be expanded in later versions.
</li>
</ul>
* Security (kernel & userspace)
** Add security mechanisms for authentication, encryption, and/or digesting.
* Cacheing (kernel)...
* Security (kernel & userspace)
** Add security mechanisms for authentication, encryption, and/or digesting.
* Cacheing (kernel)
** Add mechanisms in support of coherent cacheing
** delay-based loose coherence (ala NFSv3)
** call-back based leased coherence (ala AFS and NFSv4) (kernel & userspace)
* FS-cache (kernel)
** Integrating cacheing with the FS-cache project mechanisms.
* Device Support (kernel)
** Provide support for gatewaying raw block devices and network devices.
* Userspace Filesystems (userspace)
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
* Mount helper application (userspace)
** providing DNS resolution, id mapping, and security hooks
** optionalize linkage with p9p authentication mechanisms
** zeroconf integration
** build-in support for ssh as transport
** document and package for distributions
* Userspace server (userspace)
** "Productize" existing userspace file server
** add maxclient limitations
** support directory restrictions
** authentication mechanisms
** id mapping mechanisms
** zeroconf integration
** document and package for distributions
* Userspace Filesystems (userspace)
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
** look for ways to improvide performance and scalability
* Security (kernel & userspace)
** Add security mechanisms for authentication, encryption, and/or digesting.
** idmapd based id mapping
* Cacheing (kernel)
** Add mechanisms in support of coherent cacheing
** delay-based loose coherence (ala NFSv3)
** call-back based leased coherence (ala AFS and NFSv4) (kernel & userspace)
** Integrating cacheing with the FS-cache project mechanisms.
** optionalize linkage with p9p authentication mechanisms
** zeroconf integration
** document and package for distributions
**...
» complete change* Security (kernel & userspace)
** Add security mechanisms for authentication, encryption, and/or digesting.
* Cacheing (kernel)
** Add mechanisms in support of coherent cacheing
** delay-based loose coherence (ala NFSv3)
** call-back based leased coherence (ala AFS and NFSv4) (kernel & userspace)
* FS-cache (kernel)
** Integrating cacheing with the FS-cache project mechanisms.
* Device Support (kernel)
** Provide support for gatewaying raw block devices and network devices.
* Userspace Filesystems (userspace)
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
* Mount helper application (userspace)
** providing DNS resolution, id mapping, and security hooks
** optionalize linkage with p9p authentication mechanisms
** zeroconf integration
** document and package for distributions
* Userspace server (userspace)
** "Productize" existing userspace file server
** add maxclient limitations
** support directory restrictions
** authentication mechanisms
** id mapping mechanisms
** zeroconf integration
** document and package for distributions
* Security (kernel & userspace)
** bq. Add security mechanisms for authentication, encryption, and/or digesting.
* Cacheing (kernel)...
» complete change* Security (kernel & userspace)
** bq. Add security mechanisms for authentication, encryption, and/or digesting.
* Cacheing (kernel)
** .bq Add mechanisms in support of coherent cacheing
** cacheing, delay-based loose coherence (ala NFSv3)
** coherence, and call-back based leased coherence (ala AFS and NFSv4) (kernel & userspace) coherence.
* FS-cache (kernel)
** .bq Integrating cacheing with the FS-cache project mechanisms.
* Device Support (kernel)
** .bq Provide support for gatewaying raw block devices and network devices.
* Userspace Filesystems (userspace)
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
* Mount helper application (userspace)
** providing DNS resolution, id mapping, and security hooks
** document and package for distributions
* Userspace server (userspace)
** .bq "Productize" existing userspace server
** add maxclient limitations
** support by adding features supporting directory restrictions
** restrictions, authentication mechanisms
** mechanisms, id mapping mechanisms
** mechanisms. Also document and package for distributions
bq. Add security mechanisms for authentication, encryption, and/or digesting. digesting
* Security
bq. Add security mechanisms for authentication, encryption, and/or digesting. digesting
* Cacheing
.bq Add mechanisms in support of coherent cacheing, delay-based loose coherence, and call-back based leased coherence.
* FS-cache
.bq Integrating cacheing with the FS-cache project mechanisms.
* Device Support
.bq Provide support for gatewaying raw block devices and network devices.
* Userspace Filesystems
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
* Mount helper application
** providing DNS resolution, id mapping, and security hooks
** document and package for distributions
* Userspace server
.bq "Productize" existing server by adding features supporting directory restrictions, authentication mechanisms, id mapping mechanisms. Also document and package for distributions
o) adding security mechanisms (via keyfs?) and integrating idmapd support
o) adding cache mechanisms (coherent, time-based-coherent,...
o) adding security mechanisms (via keyfs?) and integrating idmapd support
o) adding cache mechanisms (coherent, time-based-coherent,
callback-coherent, etc.)
o) integrated fscache support
o) support for gatewaying raw network devices and block devices efficiently
* Security
bq. Add security mechanisms for authentication, encryption, and/or digesting
* Cacheing
.bq Add mechanisms in support of coherent cacheing, delay-based loose coherence, and call-back based leased coherence.
* FS-cache
.bq Integrating cacheing with the FS-cache project mechanisms.
* Device Support
.bq Provide support for gatewaying raw block devices and network devices.
* Userspace Filesystems
** Gitfs - file system interface for git
** devip (tcp/ip & udp/ip stack interface)
* Mount helper application
** providing DNS resolution, id mapping, and security hooks
** document and package for distributions
* Userspace server
.bq "Productize" existing server by adding features supporting directory restrictions, authentication mechanisms, id mapping mechanisms. Also document and package for distributions
* # Security
* # Cacheing
* # FS-cache
.bq Integrating cacheing with the FS-cache project mechanisms. mechanisms
* # Device Support
o) adding security mechanisms (via keyfs?) and integrating idmapd support
o) adding cache mechanisms (coherent, time-based-coherent,
callback-coherent, etc.)
o) integrated fscache support
o) support for gatewaying raw network devices and block devices efficiently
* # Security
bq. Add security mechanisms for authentication, encryption, and/or digesting
* # Cacheing
.bq Add mechanisms in support of coherent cacheing, delay-based loose coherence, and call-back based leased coherence.
* # FS-cache
.bq Integrating cacheing with the FS-cache project mechanisms. mechanisms
* # Device Support
.bq Provide support for gatewaying raw block devices and network devices. gateways.
* # Userspace Filesystems
** ## Gitfs - file system interface for git
** ## devip (tcp/ip & udp/ip stack interface)
##
o) adding security mechanisms (via keyfs?) and integrating idmapd support
o) adding cache mechanisms (coherent, time-based-coherent,
callback-coherent, etc.)
o) integrated fscache support
o) support for gatewaying raw network devices and block devices efficiently
# Security
bq. Add security mechanisms for authentication, encryption, and/or digesting
# Cacheing
.bq Add mechanisms in support of coherent cacheing, delay-based loose coherence, and call-back based leased coherence.
# FS-cache
.bq Integrating cacheing with the FS-cache project mechanisms
# Device Support
.bq Provide support for gateways.
# Userspace Filesystems
## Gitfs
## devip (tcp/ip & udp/ip stack interface)
##
o) adding security mechanisms (via keyfs?) and integrating idmapd support
o) adding cache mechanisms (coherent, time-based-coherent,...
» complete changeo) adding security mechanisms (via keyfs?) and integrating idmapd support
o) adding cache mechanisms (coherent, time-based-coherent,
callback-coherent, etc.)
o) integrated fscache support
o) support for gatewaying raw network devices and block devices efficiently
# Security
bq. Add security mechanisms for authentication, encryption, and/or digesting
# Cacheing
.bq Add mechanisms in support of coherent cacheing, delay-based loose coherence, and call-back based leased coherence.
# FS-cache
.bq Integrating cacheing with the FS-cache project mechanisms
# Device Support
.bq Provide support for gateways.
# Userspace Filesystems
## Gitfs
## devip (tcp/ip & udp/ip stack interface)
##
| 1 | regression bug-fixes in 2.6.21 2.6.20 | ongoing 50% |
* [[v9fs packaging]] - rolling packages for distros (need volunteers)
* a new server infrastructure
* [[v9fs Security Support]]
* [[v9fs Cache Infrastructure]]
----
*Eric's Work Queue*
| # | *Description* | *Progress* |
| 1 | regression bug-fixes in 2.6.21 2.6.20 | ongoing 50% |
| 2 | automated regressions in mambo | 0% |
| 3 | exportfs in-kernel server | 0% |
----
*Current Patch Queue (Waiting to be merged into test)*
| *Date Submitted* | *Description* | *Submitter* |
