Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 =======================================
0004 v9fs: Plan 9 Resource Sharing for Linux
0005 =======================================
0006 
0007 About
0008 =====
0009 
0010 v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
0011 
0012 This software was originally developed by Ron Minnich <rminnich@sandia.gov>
0013 and Maya Gokhale.  Additional development by Greg Watson
0014 <gwatson@lanl.gov> and most recently Eric Van Hensbergen
0015 <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
0016 <rsc@swtch.com>.
0017 
0018 The best detailed explanation of the Linux implementation and applications of
0019 the 9p client is available in the form of a USENIX paper:
0020 
0021    https://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
0022 
0023 Other applications are described in the following papers:
0024 
0025         * XCPU & Clustering
0026           http://xcpu.org/papers/xcpu-talk.pdf
0027         * KVMFS: control file system for KVM
0028           http://xcpu.org/papers/kvmfs.pdf
0029         * CellFS: A New Programming Model for the Cell BE
0030           http://xcpu.org/papers/cellfs-talk.pdf
0031         * PROSE I/O: Using 9p to enable Application Partitions
0032           http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
0033         * VirtFS: A Virtualization Aware File System pass-through
0034           http://goo.gl/3WPDg
0035 
0036 Usage
0037 =====
0038 
0039 For remote file server::
0040 
0041         mount -t 9p 10.10.1.2 /mnt/9
0042 
0043 For Plan 9 From User Space applications (http://swtch.com/plan9)::
0044 
0045         mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
0046 
0047 For server running on QEMU host with virtio transport::
0048 
0049         mount -t 9p -o trans=virtio <mount_tag> /mnt/9
0050 
0051 where mount_tag is the tag associated by the server to each of the exported
0052 mount points. Each 9P export is seen by the client as a virtio device with an
0053 associated "mount_tag" property. Available mount tags can be
0054 seen by reading /sys/bus/virtio/drivers/9pnet_virtio/virtio<n>/mount_tag files.
0055 
0056 Options
0057 =======
0058 
0059   ============= ===============================================================
0060   trans=name    select an alternative transport.  Valid options are
0061                 currently:
0062 
0063                         ========  ============================================
0064                         unix      specifying a named pipe mount point
0065                         tcp       specifying a normal TCP/IP connection
0066                         fd        used passed file descriptors for connection
0067                                   (see rfdno and wfdno)
0068                         virtio    connect to the next virtio channel available
0069                                   (from QEMU with trans_virtio module)
0070                         rdma      connect to a specified RDMA channel
0071                         ========  ============================================
0072 
0073   uname=name    user name to attempt mount as on the remote server.  The
0074                 server may override or ignore this value.  Certain user
0075                 names may require authentication.
0076 
0077   aname=name    aname specifies the file tree to access when the server is
0078                 offering several exported file systems.
0079 
0080   cache=mode    specifies a caching policy.  By default, no caches are used.
0081 
0082                         none
0083                                 default no cache policy, metadata and data
0084                                 alike are synchronous.
0085                         loose
0086                                 no attempts are made at consistency,
0087                                 intended for exclusive, read-only mounts
0088                         fscache
0089                                 use FS-Cache for a persistent, read-only
0090                                 cache backend.
0091                         mmap
0092                                 minimal cache that is only used for read-write
0093                                 mmap.  Northing else is cached, like cache=none
0094 
0095   debug=n       specifies debug level.  The debug level is a bitmask.
0096 
0097                         =====   ================================
0098                         0x01    display verbose error messages
0099                         0x02    developer debug (DEBUG_CURRENT)
0100                         0x04    display 9p trace
0101                         0x08    display VFS trace
0102                         0x10    display Marshalling debug
0103                         0x20    display RPC debug
0104                         0x40    display transport debug
0105                         0x80    display allocation debug
0106                         0x100   display protocol message debug
0107                         0x200   display Fid debug
0108                         0x400   display packet debug
0109                         0x800   display fscache tracing debug
0110                         =====   ================================
0111 
0112   rfdno=n       the file descriptor for reading with trans=fd
0113 
0114   wfdno=n       the file descriptor for writing with trans=fd
0115 
0116   msize=n       the number of bytes to use for 9p packet payload
0117 
0118   port=n        port to connect to on the remote server
0119 
0120   noextend      force legacy mode (no 9p2000.u or 9p2000.L semantics)
0121 
0122   version=name  Select 9P protocol version. Valid options are:
0123 
0124                         ========        ==============================
0125                         9p2000          Legacy mode (same as noextend)
0126                         9p2000.u        Use 9P2000.u protocol
0127                         9p2000.L        Use 9P2000.L protocol
0128                         ========        ==============================
0129 
0130   dfltuid       attempt to mount as a particular uid
0131 
0132   dfltgid       attempt to mount with a particular gid
0133 
0134   afid          security channel - used by Plan 9 authentication protocols
0135 
0136   nodevmap      do not map special files - represent them as normal files.
0137                 This can be used to share devices/named pipes/sockets between
0138                 hosts.  This functionality will be expanded in later versions.
0139 
0140   access        there are four access modes.
0141                         user
0142                                 if a user tries to access a file on v9fs
0143                                 filesystem for the first time, v9fs sends an
0144                                 attach command (Tattach) for that user.
0145                                 This is the default mode.
0146                         <uid>
0147                                 allows only user with uid=<uid> to access
0148                                 the files on the mounted filesystem
0149                         any
0150                                 v9fs does single attach and performs all
0151                                 operations as one user
0152                         clien
0153                                  ACL based access check on the 9p client
0154                                  side for access validation
0155 
0156   cachetag      cache tag to use the specified persistent cache.
0157                 cache tags for existing cache sessions can be listed at
0158                 /sys/fs/9p/caches. (applies only to cache=fscache)
0159   ============= ===============================================================
0160 
0161 Behavior
0162 ========
0163 
0164 This section aims at describing 9p 'quirks' that can be different
0165 from a local filesystem behaviors.
0166 
0167  - Setting O_NONBLOCK on a file will make client reads return as early
0168    as the server returns some data instead of trying to fill the read
0169    buffer with the requested amount of bytes or end of file is reached.
0170 
0171 Resources
0172 =========
0173 
0174 Protocol specifications are maintained on github:
0175 http://ericvh.github.com/9p-rfc/
0176 
0177 9p client and server implementations are listed on
0178 http://9p.cat-v.org/implementations
0179 
0180 A 9p2000.L server is being developed by LLNL and can be found
0181 at http://code.google.com/p/diod/
0182 
0183 There are user and developer mailing lists available through the v9fs project
0184 on sourceforge (http://sourceforge.net/projects/v9fs).
0185 
0186 News and other information is maintained on a Wiki.
0187 (http://sf.net/apps/mediawiki/v9fs/index.php).
0188 
0189 Bug reports are best issued via the mailing list.
0190 
0191 For more information on the Plan 9 Operating System check out
0192 http://plan9.bell-labs.com/plan9
0193 
0194 For information on Plan 9 from User Space (Plan 9 applications and libraries
0195 ported to Linux/BSD/OSX/etc) check out https://9fans.github.io/plan9port/