Merge tag '9p-for-5.7-2' of git://github.com/martinetd/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 9 Apr 2020 04:51:14 +0000 (21:51 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 9 Apr 2020 04:51:14 +0000 (21:51 -0700)
Pull 9p documentation update from Dominique Martinet:
 "Document the new O_NONBLOCK short read behavior"

* tag '9p-for-5.7-2' of git://github.com/martinetd/linux:
  9p: document short read behaviour with O_NONBLOCK

1  2 
Documentation/filesystems/9p.rst

index f054d1c,0000000..671fef3
mode 100644,000000..100644
--- /dev/null
@@@ -1,185 -1,0 +1,195 @@@
 +.. 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 http://swtch.com/plan9