Commit 34e75cf4 authored by Daniel W. S. Almeida's avatar Daniel W. S. Almeida Committed by Jonathan Corbet
Browse files

Documentation: nfs: convert pnfs.txt to ReST



Convert pnfs.txt to ReST. Content remains mostly unchanged.

Signed-off-by: default avatarDaniel W. S. Almeida <dwlsalmeida@gmail.com>
Link: https://lore.kernel.org/r/20200129044917.566906-2-dwlsalmeida@gmail.com


Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent bb6d3fb3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -51,3 +51,4 @@ Documentation for filesystem implementations.
   overlayfs
   virtiofs
   vfat
   nfs/index
+9 −0
Original line number Diff line number Diff line
===============================
NFS
===============================


.. toctree::
   :maxdepth: 1

   pnfs
+15 −10
Original line number Diff line number Diff line
Reference counting in pnfs:
==========================
Reference counting in pnfs
==========================

The are several inter-related caches.  We have layouts which can
@@ -9,7 +10,8 @@ we need to reference count.


struct pnfs_layout_hdr
----------------------
======================

The on-the-wire command LAYOUTGET corresponds to struct
pnfs_layout_segment, usually referred to by the variable name lseg.
Each nfs_inode may hold a pointer to a cache of these layout
@@ -25,7 +27,8 @@ the reference count, as the layout is kept around by the lseg that
keeps it in the list.

deviceid_cache
--------------
==============

lsegs reference device ids, which are resolved per nfs_client and
layout driver type.  The device ids are held in a RCU cache (struct
nfs4_deviceid_cache).  The cache itself is referenced across each
@@ -38,24 +41,26 @@ justification, but seems reasonable given that we can have multiple
deviceid's per filesystem, and multiple filesystems per nfs_client.

The hash code is copied from the nfsd code base.  A discussion of
hashing and variations of this algorithm can be found at:
http://groups.google.com/group/comp.lang.c/browse_thread/thread/9522965e2b8d3809
hashing and variations of this algorithm can be found `here.
<http://groups.google.com/group/comp.lang.c/browse_thread/thread/9522965e2b8d3809>`_

data server cache
-----------------
=================

file driver devices refer to data servers, which are kept in a module
level cache.  Its reference is held over the lifetime of the deviceid
pointing to it.

lseg
----
====

lseg maintains an extra reference corresponding to the NFS_LSEG_VALID
bit which holds it in the pnfs_layout_hdr's list.  When the final lseg
is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED
bit is set, preventing any new lsegs from being added.

layout drivers
--------------
==============

PNFS utilizes what is called layout drivers. The STD defines 4 basic
layout types: "files", "objects", "blocks", and "flexfiles". For each
@@ -68,6 +73,6 @@ Blocks-layout-driver code is in: fs/nfs/blocklayout/.. directory
Flexfiles-layout-driver code is in: fs/nfs/flexfilelayout/.. directory

blocks-layout setup
-------------------
===================

TODO: Document the setup needs of the blocks layout driver