Documentation: nfs: convert pnfs.txt to ReST
Convert pnfs.txt to ReST. Content remains mostly unchanged. Signed-off-by: Daniel W. S. Almeida <dwlsalmeida@gmail.com> Link: https://lore.kernel.org/r/20200129044917.566906-2-dwlsalmeida@gmail.com Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
bb6d3fb354
commit
34e75cf4be
|
@ -51,3 +51,4 @@ Documentation for filesystem implementations.
|
|||
overlayfs
|
||||
virtiofs
|
||||
vfat
|
||||
nfs/index
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
===============================
|
||||
NFS
|
||||
===============================
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
pnfs
|
|
@ -1,15 +1,17 @@
|
|||
Reference counting in pnfs:
|
||||
==========================
|
||||
Reference counting in pnfs
|
||||
==========================
|
||||
|
||||
The are several inter-related caches. We have layouts which can
|
||||
reference multiple devices, each of which can reference multiple data servers.
|
||||
Each data server can be referenced by multiple devices. Each device
|
||||
can be referenced by multiple layouts. To keep all of this straight,
|
||||
can be referenced by multiple layouts. To keep all of this straight,
|
||||
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
|
Loading…
Reference in New Issue