.. SPDX-License-Identifier: GPL-2.0

=======================================
v9fs: Plan 9 Resource Sharing for Linux
=======================================

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://xcpu.org/papers/xcpu-talk.pdf
	* KVMFS: control file system for KVM
	  http://xcpu.org/papers/kvmfs.pdf
	* CellFS: A New Programming Model for the Cell BE
	  http://xcpu.org/papers/cellfs-talk.pdf
	* PROSE I/O: Using 9p to enable Application Partitions
	  http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
	* VirtFS: A Virtualization Aware File System pass-through
	  http://goo.gl/3WPDg

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 trans=unix,uname=$USER

For server running on QEMU host with virtio transport::

	mount -t 9p -o trans=virtio <mount_tag> /mnt/9

where mount_tag is the tag associated by the server to each of the exported
mount points. Each 9P export is seen by the client as a virtio device with an
associated "mount_tag" property. Available mount tags can be
seen by reading /sys/bus/virtio/drivers/9pnet_virtio/virtio<n>/mount_tag files.

Options
=======

  ============= ===============================================================
  trans=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)
			virtio	  connect to the next virtio channel available
				  (from QEMU with trans_virtio module)
			rdma	  connect to a specified RDMA channel
			========  ============================================

  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 caching policy.  By default, no caches are used.

                        none
				default no cache policy, metadata and data
                                alike are synchronous.
			loose
				no attempts are made at consistency,
                                intended for exclusive, read-only mounts
                        fscache
				use FS-Cache for a persistent, read-only
				cache backend.
                        mmap
				minimal cache that is only used for read-write
                                mmap.  Northing else is cached, like cache=none

  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
			0x100   display protocol message debug
			0x200   display Fid debug
			0x400   display packet debug
			0x800   display fscache tracing debug
			=====   ================================

  rfdno=n	the file descriptor for reading with trans=fd

  wfdno=n	the file descriptor for writing with trans=fd

  msize=n	the number of bytes to use for 9p packet payload

  port=n	port to connect to on the remote server

  noextend	force legacy mode (no 9p2000.u or 9p2000.L semantics)

  version=name	Select 9P protocol version. Valid options are:

			========        ==============================
			9p2000          Legacy mode (same as noextend)
			9p2000.u        Use 9P2000.u protocol
			9p2000.L        Use 9P2000.L protocol
			========        ==============================

  dfltuid	attempt to mount as a particular uid

  dfltgid	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.

  access	there are four access modes.
			user
				if a user tries to access a file on v9fs
			        filesystem for the first time, v9fs sends an
			        attach command (Tattach) for that user.
				This is the default mode.
			<uid>
				allows only user with uid=<uid> to access
				the files on the mounted filesystem
			any
				v9fs does single attach and performs all
				operations as one user
			clien
				 ACL based access check on the 9p client
			         side for access validation

  cachetag	cache tag to use the specified persistent cache.
		cache tags for existing cache sessions can be listed at
		/sys/fs/9p/caches. (applies only to cache=fscache)
  ============= ===============================================================

Behavior
========

This section aims at describing 9p 'quirks' that can be different
from a local filesystem behaviors.

 - Setting O_NONBLOCK on a file will make client reads return as early
   as the server returns some data instead of trying to fill the read
   buffer with the requested amount of bytes or end of file is reached.

Resources
=========

Protocol specifications are maintained on github:
http://ericvh.github.com/9p-rfc/

9p client and server implementations are listed on
http://9p.cat-v.org/implementations

A 9p2000.L server is being developed by LLNL and can be found
at http://code.google.com/p/diod/

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 a Wiki.
(http://sf.net/apps/mediawiki/v9fs/index.php).

Bug reports are best issued via the mailing list.

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 https://9fans.github.io/plan9port/
