cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

9p.rst (6777B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3=======================================
      4v9fs: Plan 9 Resource Sharing for Linux
      5=======================================
      6
      7About
      8=====
      9
     10v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
     11
     12This software was originally developed by Ron Minnich <rminnich@sandia.gov>
     13and Maya Gokhale.  Additional development by Greg Watson
     14<gwatson@lanl.gov> and most recently Eric Van Hensbergen
     15<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
     16<rsc@swtch.com>.
     17
     18The best detailed explanation of the Linux implementation and applications of
     19the 9p client is available in the form of a USENIX paper:
     20
     21   https://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
     22
     23Other applications are described in the following papers:
     24
     25	* XCPU & Clustering
     26	  http://xcpu.org/papers/xcpu-talk.pdf
     27	* KVMFS: control file system for KVM
     28	  http://xcpu.org/papers/kvmfs.pdf
     29	* CellFS: A New Programming Model for the Cell BE
     30	  http://xcpu.org/papers/cellfs-talk.pdf
     31	* PROSE I/O: Using 9p to enable Application Partitions
     32	  http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
     33	* VirtFS: A Virtualization Aware File System pass-through
     34	  http://goo.gl/3WPDg
     35
     36Usage
     37=====
     38
     39For remote file server::
     40
     41	mount -t 9p 10.10.1.2 /mnt/9
     42
     43For Plan 9 From User Space applications (http://swtch.com/plan9)::
     44
     45	mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
     46
     47For server running on QEMU host with virtio transport::
     48
     49	mount -t 9p -o trans=virtio <mount_tag> /mnt/9
     50
     51where mount_tag is the tag associated by the server to each of the exported
     52mount points. Each 9P export is seen by the client as a virtio device with an
     53associated "mount_tag" property. Available mount tags can be
     54seen by reading /sys/bus/virtio/drivers/9pnet_virtio/virtio<n>/mount_tag files.
     55
     56Options
     57=======
     58
     59  ============= ===============================================================
     60  trans=name	select an alternative transport.  Valid options are
     61  		currently:
     62
     63			========  ============================================
     64			unix 	  specifying a named pipe mount point
     65			tcp	  specifying a normal TCP/IP connection
     66			fd   	  used passed file descriptors for connection
     67                                  (see rfdno and wfdno)
     68			virtio	  connect to the next virtio channel available
     69				  (from QEMU with trans_virtio module)
     70			rdma	  connect to a specified RDMA channel
     71			========  ============================================
     72
     73  uname=name	user name to attempt mount as on the remote server.  The
     74  		server may override or ignore this value.  Certain user
     75		names may require authentication.
     76
     77  aname=name	aname specifies the file tree to access when the server is
     78  		offering several exported file systems.
     79
     80  cache=mode	specifies a caching policy.  By default, no caches are used.
     81
     82                        none
     83				default no cache policy, metadata and data
     84                                alike are synchronous.
     85			loose
     86				no attempts are made at consistency,
     87                                intended for exclusive, read-only mounts
     88                        fscache
     89				use FS-Cache for a persistent, read-only
     90				cache backend.
     91                        mmap
     92				minimal cache that is only used for read-write
     93                                mmap.  Northing else is cached, like cache=none
     94
     95  debug=n	specifies debug level.  The debug level is a bitmask.
     96
     97			=====   ================================
     98			0x01    display verbose error messages
     99			0x02    developer debug (DEBUG_CURRENT)
    100			0x04    display 9p trace
    101			0x08    display VFS trace
    102			0x10    display Marshalling debug
    103			0x20    display RPC debug
    104			0x40    display transport debug
    105			0x80    display allocation debug
    106			0x100   display protocol message debug
    107			0x200   display Fid debug
    108			0x400   display packet debug
    109			0x800   display fscache tracing debug
    110			=====   ================================
    111
    112  rfdno=n	the file descriptor for reading with trans=fd
    113
    114  wfdno=n	the file descriptor for writing with trans=fd
    115
    116  msize=n	the number of bytes to use for 9p packet payload
    117
    118  port=n	port to connect to on the remote server
    119
    120  noextend	force legacy mode (no 9p2000.u or 9p2000.L semantics)
    121
    122  version=name	Select 9P protocol version. Valid options are:
    123
    124			========        ==============================
    125			9p2000          Legacy mode (same as noextend)
    126			9p2000.u        Use 9P2000.u protocol
    127			9p2000.L        Use 9P2000.L protocol
    128			========        ==============================
    129
    130  dfltuid	attempt to mount as a particular uid
    131
    132  dfltgid	attempt to mount with a particular gid
    133
    134  afid		security channel - used by Plan 9 authentication protocols
    135
    136  nodevmap	do not map special files - represent them as normal files.
    137  		This can be used to share devices/named pipes/sockets between
    138		hosts.  This functionality will be expanded in later versions.
    139
    140  access	there are four access modes.
    141			user
    142				if a user tries to access a file on v9fs
    143			        filesystem for the first time, v9fs sends an
    144			        attach command (Tattach) for that user.
    145				This is the default mode.
    146			<uid>
    147				allows only user with uid=<uid> to access
    148				the files on the mounted filesystem
    149			any
    150				v9fs does single attach and performs all
    151				operations as one user
    152			clien
    153				 ACL based access check on the 9p client
    154			         side for access validation
    155
    156  cachetag	cache tag to use the specified persistent cache.
    157		cache tags for existing cache sessions can be listed at
    158		/sys/fs/9p/caches. (applies only to cache=fscache)
    159  ============= ===============================================================
    160
    161Behavior
    162========
    163
    164This section aims at describing 9p 'quirks' that can be different
    165from a local filesystem behaviors.
    166
    167 - Setting O_NONBLOCK on a file will make client reads return as early
    168   as the server returns some data instead of trying to fill the read
    169   buffer with the requested amount of bytes or end of file is reached.
    170
    171Resources
    172=========
    173
    174Protocol specifications are maintained on github:
    175http://ericvh.github.com/9p-rfc/
    176
    1779p client and server implementations are listed on
    178http://9p.cat-v.org/implementations
    179
    180A 9p2000.L server is being developed by LLNL and can be found
    181at http://code.google.com/p/diod/
    182
    183There are user and developer mailing lists available through the v9fs project
    184on sourceforge (http://sourceforge.net/projects/v9fs).
    185
    186News and other information is maintained on a Wiki.
    187(http://sf.net/apps/mediawiki/v9fs/index.php).
    188
    189Bug reports are best issued via the mailing list.
    190
    191For more information on the Plan 9 Operating System check out
    192http://plan9.bell-labs.com/plan9
    193
    194For information on Plan 9 from User Space (Plan 9 applications and libraries
    195ported to Linux/BSD/OSX/etc) check out https://9fans.github.io/plan9port/