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

   https://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/
