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
|
overlayfs
|
||||||
virtiofs
|
virtiofs
|
||||||
vfat
|
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
|
The are several inter-related caches. We have layouts which can
|
||||||
reference multiple devices, each of which can reference multiple data servers.
|
reference multiple devices, each of which can reference multiple data servers.
|
||||||
Each data server can be referenced by multiple devices. Each device
|
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.
|
we need to reference count.
|
||||||
|
|
||||||
|
|
||||||
struct pnfs_layout_hdr
|
struct pnfs_layout_hdr
|
||||||
----------------------
|
======================
|
||||||
|
|
||||||
The on-the-wire command LAYOUTGET corresponds to struct
|
The on-the-wire command LAYOUTGET corresponds to struct
|
||||||
pnfs_layout_segment, usually referred to by the variable name lseg.
|
pnfs_layout_segment, usually referred to by the variable name lseg.
|
||||||
Each nfs_inode may hold a pointer to a cache of these layout
|
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.
|
keeps it in the list.
|
||||||
|
|
||||||
deviceid_cache
|
deviceid_cache
|
||||||
--------------
|
==============
|
||||||
|
|
||||||
lsegs reference device ids, which are resolved per nfs_client and
|
lsegs reference device ids, which are resolved per nfs_client and
|
||||||
layout driver type. The device ids are held in a RCU cache (struct
|
layout driver type. The device ids are held in a RCU cache (struct
|
||||||
nfs4_deviceid_cache). The cache itself is referenced across each
|
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.
|
deviceid's per filesystem, and multiple filesystems per nfs_client.
|
||||||
|
|
||||||
The hash code is copied from the nfsd code base. A discussion of
|
The hash code is copied from the nfsd code base. A discussion of
|
||||||
hashing and variations of this algorithm can be found at:
|
hashing and variations of this algorithm can be found `here.
|
||||||
http://groups.google.com/group/comp.lang.c/browse_thread/thread/9522965e2b8d3809
|
<http://groups.google.com/group/comp.lang.c/browse_thread/thread/9522965e2b8d3809>`_
|
||||||
|
|
||||||
data server cache
|
data server cache
|
||||||
-----------------
|
=================
|
||||||
|
|
||||||
file driver devices refer to data servers, which are kept in a module
|
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
|
level cache. Its reference is held over the lifetime of the deviceid
|
||||||
pointing to it.
|
pointing to it.
|
||||||
|
|
||||||
lseg
|
lseg
|
||||||
----
|
====
|
||||||
|
|
||||||
lseg maintains an extra reference corresponding to the NFS_LSEG_VALID
|
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
|
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
|
is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED
|
||||||
bit is set, preventing any new lsegs from being added.
|
bit is set, preventing any new lsegs from being added.
|
||||||
|
|
||||||
layout drivers
|
layout drivers
|
||||||
--------------
|
==============
|
||||||
|
|
||||||
PNFS utilizes what is called layout drivers. The STD defines 4 basic
|
PNFS utilizes what is called layout drivers. The STD defines 4 basic
|
||||||
layout types: "files", "objects", "blocks", and "flexfiles". For each
|
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
|
Flexfiles-layout-driver code is in: fs/nfs/flexfilelayout/.. directory
|
||||||
|
|
||||||
blocks-layout setup
|
blocks-layout setup
|
||||||
-------------------
|
===================
|
||||||
|
|
||||||
TODO: Document the setup needs of the blocks layout driver
|
TODO: Document the setup needs of the blocks layout driver
|
Loading…
Reference in New Issue