__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<!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 — 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 <<a class="reference external" href="mailto:rminnich%40sandia.gov">rminnich<span>@</span>sandia<span>.</span>gov</a>>
and Maya Gokhale. Additional development by Greg Watson
<<a class="reference external" href="mailto:gwatson%40lanl.gov">gwatson<span>@</span>lanl<span>.</span>gov</a>> and most recently Eric Van Hensbergen
<<a class="reference external" href="mailto:ericvh%40gmail.com">ericvh<span>@</span>gmail<span>.</span>com</a>>, Latchesar Ionkov <<a class="reference external" href="mailto:lucho%40ionkov.net">lucho<span>@</span>ionkov<span>.</span>net</a>> and Russ Cox
<<a class="reference external" href="mailto:rsc%40swtch.com">rsc<span>@</span>swtch<span>.</span>com</a>>.</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 & 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 <mount_tag> /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<n>/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 <device> /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=<device> rootfstype=9p rootflags=trans=usbg,cache=loose,uname=root,access=0,dfltuid=0,dfltgid=0,aname=/path/to/rootfs
</pre></div>
</div>
<p>where <device> 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><uid></dt><dd><p>allows only user with uid=<uid> 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">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <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>| 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 |
|