diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-12 13:39:41 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-12 13:39:41 -0500 |
commit | 61845143febe6b88349acad4732adc54894009a3 (patch) | |
tree | bed6a23efe05b9867b8b4d1f4d251fc1c562e7e4 /Documentation/filesystems | |
parent | a26be149facb22d30cd92cadb26f651d6fe802c9 (diff) | |
parent | c23ae6017835b5bc9b9ec9d5d9c2b1523053f503 (diff) |
Merge branch 'for-3.20' of git://linux-nfs.org/~bfields/linux
Pull nfsd updates from Bruce Fields:
"The main change is the pNFS block server support from Christoph, which
allows an NFS client connected to shared disk to do block IO to the
shared disk in place of NFS reads and writes. This also requires xfs
patches, which should arrive soon through the xfs tree, barring
unexpected problems. Support for other filesystems is also possible
if there's interest.
Thanks also to Chuck Lever for continuing work to get NFS/RDMA into
shape"
* 'for-3.20' of git://linux-nfs.org/~bfields/linux: (32 commits)
nfsd: default NFSv4.2 to on
nfsd: pNFS block layout driver
exportfs: add methods for block layout exports
nfsd: add trace events
nfsd: update documentation for pNFS support
nfsd: implement pNFS layout recalls
nfsd: implement pNFS operations
nfsd: make find_any_file available outside nfs4state.c
nfsd: make find/get/put file available outside nfs4state.c
nfsd: make lookup/alloc/unhash_stid available outside nfs4state.c
nfsd: add fh_fsid_match helper
nfsd: move nfsd_fh_match to nfsfh.h
fs: add FL_LAYOUT lease type
fs: track fl_owner for leases
nfs: add LAYOUT_TYPE_MAX enum value
nfsd: factor out a helper to decode nfstime4 values
sunrpc/lockd: fix references to the BKL
nfsd: fix year-2038 nfs4 state problem
svcrdma: Handle additional inline content
svcrdma: Move read list XDR round-up logic
...
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/nfs/nfs41-server.txt | 23 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/pnfs-block-server.txt | 37 |
2 files changed, 45 insertions, 15 deletions
diff --git a/Documentation/filesystems/nfs/nfs41-server.txt b/Documentation/filesystems/nfs/nfs41-server.txt index c49cd7e796e7..682a59fabe3f 100644 --- a/Documentation/filesystems/nfs/nfs41-server.txt +++ b/Documentation/filesystems/nfs/nfs41-server.txt | |||
@@ -24,11 +24,6 @@ focuses on the mandatory-to-implement NFSv4.1 Sessions, providing | |||
24 | "exactly once" semantics and better control and throttling of the | 24 | "exactly once" semantics and better control and throttling of the |
25 | resources allocated for each client. | 25 | resources allocated for each client. |
26 | 26 | ||
27 | Other NFSv4.1 features, Parallel NFS operations in particular, | ||
28 | are still under development out of tree. | ||
29 | See http://wiki.linux-nfs.org/wiki/index.php/PNFS_prototype_design | ||
30 | for more information. | ||
31 | |||
32 | The table below, taken from the NFSv4.1 document, lists | 27 | The table below, taken from the NFSv4.1 document, lists |
33 | the operations that are mandatory to implement (REQ), optional | 28 | the operations that are mandatory to implement (REQ), optional |
34 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) | 29 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) |
@@ -43,9 +38,7 @@ The OPTIONAL features identified and their abbreviations are as follows: | |||
43 | The following abbreviations indicate the linux server implementation status. | 38 | The following abbreviations indicate the linux server implementation status. |
44 | I Implemented NFSv4.1 operations. | 39 | I Implemented NFSv4.1 operations. |
45 | NS Not Supported. | 40 | NS Not Supported. |
46 | NS* unimplemented optional feature. | 41 | NS* Unimplemented optional feature. |
47 | P pNFS features implemented out of tree. | ||
48 | PNS pNFS features that are not supported yet (out of tree). | ||
49 | 42 | ||
50 | Operations | 43 | Operations |
51 | 44 | ||
@@ -70,13 +63,13 @@ I | DESTROY_SESSION | REQ | | Section 18.37 | | |||
70 | I | EXCHANGE_ID | REQ | | Section 18.35 | | 63 | I | EXCHANGE_ID | REQ | | Section 18.35 | |
71 | I | FREE_STATEID | REQ | | Section 18.38 | | 64 | I | FREE_STATEID | REQ | | Section 18.38 | |
72 | | GETATTR | REQ | | Section 18.7 | | 65 | | GETATTR | REQ | | Section 18.7 | |
73 | P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | | 66 | I | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | |
74 | P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | | 67 | NS*| GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | |
75 | | GETFH | REQ | | Section 18.8 | | 68 | | GETFH | REQ | | Section 18.8 | |
76 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | | 69 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | |
77 | P | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | | 70 | I | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | |
78 | P | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | | 71 | I | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | |
79 | P | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | | 72 | I | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | |
80 | | LINK | OPT | | Section 18.9 | | 73 | | LINK | OPT | | Section 18.9 | |
81 | | LOCK | REQ | | Section 18.10 | | 74 | | LOCK | REQ | | Section 18.10 | |
82 | | LOCKT | REQ | | Section 18.11 | | 75 | | LOCKT | REQ | | Section 18.11 | |
@@ -122,9 +115,9 @@ Callback Operations | |||
122 | | | MNI | or OPT) | | | 115 | | | MNI | or OPT) | | |
123 | +-------------------------+-----------+-------------+---------------+ | 116 | +-------------------------+-----------+-------------+---------------+ |
124 | | CB_GETATTR | OPT | FDELG (REQ) | Section 20.1 | | 117 | | CB_GETATTR | OPT | FDELG (REQ) | Section 20.1 | |
125 | P | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section 20.3 | | 118 | I | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section 20.3 | |
126 | NS*| CB_NOTIFY | OPT | DDELG (REQ) | Section 20.4 | | 119 | NS*| CB_NOTIFY | OPT | DDELG (REQ) | Section 20.4 | |
127 | P | CB_NOTIFY_DEVICEID | OPT | pNFS (OPT) | Section 20.12 | | 120 | NS*| CB_NOTIFY_DEVICEID | OPT | pNFS (OPT) | Section 20.12 | |
128 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | | 121 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | |
129 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | | 122 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | |
130 | | CB_RECALL | OPT | FDELG, | Section 20.2 | | 123 | | CB_RECALL | OPT | FDELG, | Section 20.2 | |
diff --git a/Documentation/filesystems/nfs/pnfs-block-server.txt b/Documentation/filesystems/nfs/pnfs-block-server.txt new file mode 100644 index 000000000000..2143673cf154 --- /dev/null +++ b/Documentation/filesystems/nfs/pnfs-block-server.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | pNFS block layout server user guide | ||
2 | |||
3 | The Linux NFS server now supports the pNFS block layout extension. In this | ||
4 | case the NFS server acts as Metadata Server (MDS) for pNFS, which in addition | ||
5 | to handling all the metadata access to the NFS export also hands out layouts | ||
6 | to the clients to directly access the underlying block devices that are | ||
7 | shared with the client. | ||
8 | |||
9 | To use pNFS block layouts with with the Linux NFS server the exported file | ||
10 | system needs to support the pNFS block layouts (currently just XFS), and the | ||
11 | file system must sit on shared storage (typically iSCSI) that is accessible | ||
12 | to the clients in addition to the MDS. As of now the file system needs to | ||
13 | sit directly on the exported volume, striping or concatenation of | ||
14 | volumes on the MDS and clients is not supported yet. | ||
15 | |||
16 | On the server, pNFS block volume support is automatically if the file system | ||
17 | support it. On the client make sure the kernel has the CONFIG_PNFS_BLOCK | ||
18 | option enabled, the blkmapd daemon from nfs-utils is running, and the | ||
19 | file system is mounted using the NFSv4.1 protocol version (mount -o vers=4.1). | ||
20 | |||
21 | If the nfsd server needs to fence a non-responding client it calls | ||
22 | /sbin/nfsd-recall-failed with the first argument set to the IP address of | ||
23 | the client, and the second argument set to the device node without the /dev | ||
24 | prefix for the file system to be fenced. Below is an example file that shows | ||
25 | how to translate the device into a serial number from SCSI EVPD 0x80: | ||
26 | |||
27 | cat > /sbin/nfsd-recall-failed << EOF | ||
28 | #!/bin/sh | ||
29 | |||
30 | CLIENT="$1" | ||
31 | DEV="/dev/$2" | ||
32 | EVPD=`sg_inq --page=0x80 ${DEV} | \ | ||
33 | grep "Unit serial number:" | \ | ||
34 | awk -F ': ' '{print $2}'` | ||
35 | |||
36 | echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log | ||
37 | EOF | ||