1 ============================= 2 NFSv4.1 Server Implementation 3 ============================= 4 5 Server support for minorversion 1 can be contr 6 /proc/fs/nfsd/versions control file. The stri 7 by reading this file will contain either "+4.1 8 correspondingly. 9 10 Currently, server support for minorversion 1 i 11 It can be disabled at run time by writing the 12 the /proc/fs/nfsd/versions control file. Note 13 control file, the nfsd service must be taken d 14 for this; see rpc.nfsd(8). 15 16 (Warning: older servers will interpret "+4.1" 17 "-4", respectively. Therefore, code meant to 18 kernels must turn 4.1 on or off *before* turni 19 on or off; rpc.nfsd does this correctly.) 20 21 The NFSv4 minorversion 1 (NFSv4.1) implementat 22 on RFC 5661. 23 24 From the many new features in NFSv4.1 the curr 25 focuses on the mandatory-to-implement NFSv4.1 26 "exactly once" semantics and better control an 27 resources allocated for each client. 28 29 The table below, taken from the NFSv4.1 docume 30 the operations that are mandatory to implement 31 (OPT), and NFSv4.0 operations that are require 32 in minor version 1. The first column indicate 33 are not supported yet by the linux server impl 34 35 The OPTIONAL features identified and their abb 36 37 - **pNFS** Parallel NFS 38 - **FDELG** File Delegations 39 - **DDELG** Directory Delegations 40 41 The following abbreviations indicate the linux 42 43 - **I** Implemented NFSv4.1 operations. 44 - **NS** Not Supported. 45 - **NS\*** Unimplemented optional feature 46 47 Operations 48 ========== 49 50 +-----------------------+--------------------- 51 | Implementation status | Operation 52 +=======================+===================== 53 | | ACCESS 54 +-----------------------+--------------------- 55 | I | BACKCHANNEL_CTL 56 +-----------------------+--------------------- 57 | I | BIND_CONN_TO_SESSION 58 +-----------------------+--------------------- 59 | | CLOSE 60 +-----------------------+--------------------- 61 | | COMMIT 62 +-----------------------+--------------------- 63 | | CREATE 64 +-----------------------+--------------------- 65 | I | CREATE_SESSION 66 +-----------------------+--------------------- 67 | NS* | DELEGPURGE 68 +-----------------------+--------------------- 69 | | DELEGRETURN 70 +-----------------------+--------------------- 71 | | 72 +-----------------------+--------------------- 73 | | 74 +-----------------------+--------------------- 75 | I | DESTROY_CLIENTID 76 +-----------------------+--------------------- 77 | I | DESTROY_SESSION 78 +-----------------------+--------------------- 79 | I | EXCHANGE_ID 80 +-----------------------+--------------------- 81 | I | FREE_STATEID 82 +-----------------------+--------------------- 83 | | GETATTR 84 +-----------------------+--------------------- 85 | I | GETDEVICEINFO 86 +-----------------------+--------------------- 87 | NS* | GETDEVICELIST 88 +-----------------------+--------------------- 89 | | GETFH 90 +-----------------------+--------------------- 91 | NS* | GET_DIR_DELEGATION 92 +-----------------------+--------------------- 93 | I | LAYOUTCOMMIT 94 +-----------------------+--------------------- 95 | I | LAYOUTGET 96 +-----------------------+--------------------- 97 | I | LAYOUTRETURN 98 +-----------------------+--------------------- 99 | | LINK 100 +-----------------------+--------------------- 101 | | LOCK 102 +-----------------------+--------------------- 103 | | LOCKT 104 +-----------------------+--------------------- 105 | | LOCKU 106 +-----------------------+--------------------- 107 | | LOOKUP 108 +-----------------------+--------------------- 109 | | LOOKUPP 110 +-----------------------+--------------------- 111 | | NVERIFY 112 +-----------------------+--------------------- 113 | | OPEN 114 +-----------------------+--------------------- 115 | NS* | OPENATTR 116 +-----------------------+--------------------- 117 | | OPEN_CONFIRM 118 +-----------------------+--------------------- 119 | | OPEN_DOWNGRADE 120 +-----------------------+--------------------- 121 | | PUTFH 122 +-----------------------+--------------------- 123 | | PUTPUBFH 124 +-----------------------+--------------------- 125 | | PUTROOTFH 126 +-----------------------+--------------------- 127 | | READ 128 +-----------------------+--------------------- 129 | | READDIR 130 +-----------------------+--------------------- 131 | | READLINK 132 +-----------------------+--------------------- 133 | | RECLAIM_COMPLETE 134 +-----------------------+--------------------- 135 | | RELEASE_LOCKOWNER 136 +-----------------------+--------------------- 137 | | REMOVE 138 +-----------------------+--------------------- 139 | | RENAME 140 +-----------------------+--------------------- 141 | | RENEW 142 +-----------------------+--------------------- 143 | | RESTOREFH 144 +-----------------------+--------------------- 145 | | SAVEFH 146 +-----------------------+--------------------- 147 | | SECINFO 148 +-----------------------+--------------------- 149 | I | SECINFO_NO_NAME 150 +-----------------------+--------------------- 151 | | 152 +-----------------------+--------------------- 153 | I | SEQUENCE 154 +-----------------------+--------------------- 155 | | SETATTR 156 +-----------------------+--------------------- 157 | | SETCLIENTID 158 +-----------------------+--------------------- 159 | | SETCLIENTID_CONFIRM 160 +-----------------------+--------------------- 161 | NS | SET_SSV 162 +-----------------------+--------------------- 163 | I | TEST_STATEID 164 +-----------------------+--------------------- 165 | | VERIFY 166 +-----------------------+--------------------- 167 | NS* | WANT_DELEGATION 168 +-----------------------+--------------------- 169 | | WRITE 170 +-----------------------+--------------------- 171 172 173 Callback Operations 174 =================== 175 +-----------------------+--------------------- 176 | Implementation status | Operation 177 +=======================+===================== 178 | | CB_GETATTR 179 +-----------------------+--------------------- 180 | I | CB_LAYOUTRECALL 181 +-----------------------+--------------------- 182 | NS* | CB_NOTIFY 183 +-----------------------+--------------------- 184 | NS* | CB_NOTIFY_DEVICEID 185 +-----------------------+--------------------- 186 | NS* | CB_NOTIFY_LOCK 187 +-----------------------+--------------------- 188 | NS* | CB_PUSH_DELEG 189 +-----------------------+--------------------- 190 | | CB_RECALL 191 +-----------------------+--------------------- 192 | | 193 +-----------------------+--------------------- 194 | | 195 +-----------------------+--------------------- 196 | NS* | CB_RECALL_ANY 197 +-----------------------+--------------------- 198 | | 199 +-----------------------+--------------------- 200 | | 201 +-----------------------+--------------------- 202 | NS | CB_RECALL_SLOT 203 +-----------------------+--------------------- 204 | NS* | CB_RECALLABLE_OBJ_AV 205 +-----------------------+--------------------- 206 | | 207 +-----------------------+--------------------- 208 | I | CB_SEQUENCE 209 +-----------------------+--------------------- 210 | | 211 +-----------------------+--------------------- 212 | | 213 +-----------------------+--------------------- 214 | NS* | CB_WANTS_CANCELLED 215 +-----------------------+--------------------- 216 | | 217 +-----------------------+--------------------- 218 | | 219 +-----------------------+--------------------- 220 221 222 Implementation notes: 223 ===================== 224 225 SSV: 226 The spec claims this is mandatory, but we do 227 implementations, so we're ignoring it for no 228 NFS4ERR_ENCR_ALG_UNSUPP on EXCHANGE_ID, whic 229 230 GSS on the backchannel: 231 Again, theoretically required but not widely 232 particular, the current Linux client doesn't 233 NFS4ERR_ENCR_ALG_UNSUPP on CREATE_SESSION. 234 235 DELEGPURGE: 236 mandatory only for servers that support CLAI 237 CLAIM_DELEG_PREV_FH (which allows clients to 238 persist across client reboots). Thus we nee 239 now. 240 241 EXCHANGE_ID: 242 implementation ids are ignored 243 244 CREATE_SESSION: 245 backchannel attributes are ignored 246 247 SEQUENCE: 248 no support for dynamic slot table renegotiat 249 250 Nonstandard compound limitations: 251 No support for a sessions fore channel RPC c 252 ca_maxrequestsize request and a ca_maxrespon 253 fail to live up to the promise we made in CR 254 negotiation. 255 256 See also http://wiki.linux-nfs.org/wiki/index.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.