-
-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'nfsd-6.14' of git://git.kernel.org/pub/scm/linux/kernel/gi…
…t/cel/linux Pull nfsd updates from Chuck Lever: "Jeff Layton contributed an implementation of NFSv4.2+ attribute delegation, as described here: https://www.ietf.org/archive/id/draft-ietf-nfsv4-delstid-08.html This interoperates with similar functionality introduced into the Linux NFS client in v6.11. An attribute delegation permits an NFS client to manage a file's mtime, rather than flushing dirty data to the NFS server so that the file's mtime reflects the last write, which is considerably slower. Neil Brown contributed dynamic NFSv4.1 session slot table resizing. This facility enables NFSD to increase or decrease the number of slots per NFS session depending on server memory availability. More session slots means greater parallelism. Chuck Lever fixed a long-standing latent bug where NFSv4 COMPOUND encoding screws up when crossing a page boundary in the encoding buffer. This is a zero-day bug, but hitting it is rare and depends on the NFS client implementation. The Linux NFS client does not happen to trigger this issue. A variety of bug fixes and other incremental improvements fill out the list of commits in this release. Great thanks to all contributors, reviewers, testers, and bug reporters who participated during this development cycle" * tag 'nfsd-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux: (42 commits) sunrpc: Remove gss_{de,en}crypt_xdr_buf deadcode sunrpc: Remove gss_generic_token deadcode sunrpc: Remove unused xprt_iter_get_xprt Revert "SUNRPC: Reduce thread wake-up rate when receiving large RPC messages" nfsd: implement OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION nfsd: handle delegated timestamps in SETATTR nfsd: add support for delegated timestamps nfsd: rework NFS4_SHARE_WANT_* flag handling nfsd: add support for FATTR4_OPEN_ARGUMENTS nfsd: prepare delegation code for handing out *_ATTRS_DELEG delegations nfsd: rename NFS4_SHARE_WANT_* constants to OPEN4_SHARE_ACCESS_WANT_* nfsd: switch to autogenerated definitions for open_delegation_type4 nfs_common: make include/linux/nfs4.h include generated nfs4_1.h nfsd: fix handling of delegated change attr in CB_GETATTR SUNRPC: Document validity guarantees of the pointer returned by reserve_space NFSD: Insulate nfsd4_encode_fattr4() from page boundaries in the encode buffer NFSD: Insulate nfsd4_encode_secinfo() from page boundaries in the encode buffer NFSD: Refactor nfsd4_do_encode_secinfo() again NFSD: Insulate nfsd4_encode_readlink() from page boundaries in the encode buffer NFSD: Insulate nfsd4_encode_read_plus_data() from page boundaries in the encode buffer ...
- Loading branch information
Showing
43 changed files
with
1,464 additions
and
887 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
/* | ||
* Copyright (c) 2010 IETF Trust and the persons identified | ||
* as the document authors. All rights reserved. | ||
* | ||
* The document authors are identified in RFC 3530 and | ||
* RFC 5661. | ||
* | ||
* Redistribution and use in source and binary forms, with | ||
* or without modification, are permitted provided that the | ||
* following conditions are met: | ||
* | ||
* - Redistributions of source code must retain the above | ||
* copyright notice, this list of conditions and the | ||
* following disclaimer. | ||
* | ||
* - Redistributions in binary form must reproduce the above | ||
* copyright notice, this list of conditions and the | ||
* following disclaimer in the documentation and/or other | ||
* materials provided with the distribution. | ||
* | ||
* - Neither the name of Internet Society, IETF or IETF | ||
* Trust, nor the names of specific contributors, may be | ||
* used to endorse or promote products derived from this | ||
* software without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS | ||
* AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED | ||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | ||
* EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | ||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
|
||
pragma header nfs4; | ||
|
||
/* | ||
* Basic typedefs for RFC 1832 data type definitions | ||
*/ | ||
typedef hyper int64_t; | ||
typedef unsigned int uint32_t; | ||
|
||
/* | ||
* Basic data types | ||
*/ | ||
typedef uint32_t bitmap4<>; | ||
|
||
/* | ||
* Timeval | ||
*/ | ||
struct nfstime4 { | ||
int64_t seconds; | ||
uint32_t nseconds; | ||
}; | ||
|
||
|
||
/* | ||
* The following content was extracted from draft-ietf-nfsv4-delstid | ||
*/ | ||
|
||
typedef bool fattr4_offline; | ||
|
||
|
||
const FATTR4_OFFLINE = 83; | ||
|
||
|
||
struct open_arguments4 { | ||
bitmap4 oa_share_access; | ||
bitmap4 oa_share_deny; | ||
bitmap4 oa_share_access_want; | ||
bitmap4 oa_open_claim; | ||
bitmap4 oa_create_mode; | ||
}; | ||
|
||
|
||
enum open_args_share_access4 { | ||
OPEN_ARGS_SHARE_ACCESS_READ = 1, | ||
OPEN_ARGS_SHARE_ACCESS_WRITE = 2, | ||
OPEN_ARGS_SHARE_ACCESS_BOTH = 3 | ||
}; | ||
|
||
|
||
enum open_args_share_deny4 { | ||
OPEN_ARGS_SHARE_DENY_NONE = 0, | ||
OPEN_ARGS_SHARE_DENY_READ = 1, | ||
OPEN_ARGS_SHARE_DENY_WRITE = 2, | ||
OPEN_ARGS_SHARE_DENY_BOTH = 3 | ||
}; | ||
|
||
|
||
enum open_args_share_access_want4 { | ||
OPEN_ARGS_SHARE_ACCESS_WANT_ANY_DELEG = 3, | ||
OPEN_ARGS_SHARE_ACCESS_WANT_NO_DELEG = 4, | ||
OPEN_ARGS_SHARE_ACCESS_WANT_CANCEL = 5, | ||
OPEN_ARGS_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL | ||
= 17, | ||
OPEN_ARGS_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED | ||
= 18, | ||
OPEN_ARGS_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS = 20, | ||
OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION = 21 | ||
}; | ||
|
||
|
||
enum open_args_open_claim4 { | ||
OPEN_ARGS_OPEN_CLAIM_NULL = 0, | ||
OPEN_ARGS_OPEN_CLAIM_PREVIOUS = 1, | ||
OPEN_ARGS_OPEN_CLAIM_DELEGATE_CUR = 2, | ||
OPEN_ARGS_OPEN_CLAIM_DELEGATE_PREV = 3, | ||
OPEN_ARGS_OPEN_CLAIM_FH = 4, | ||
OPEN_ARGS_OPEN_CLAIM_DELEG_CUR_FH = 5, | ||
OPEN_ARGS_OPEN_CLAIM_DELEG_PREV_FH = 6 | ||
}; | ||
|
||
|
||
enum open_args_createmode4 { | ||
OPEN_ARGS_CREATEMODE_UNCHECKED4 = 0, | ||
OPEN_ARGS_CREATE_MODE_GUARDED = 1, | ||
OPEN_ARGS_CREATEMODE_EXCLUSIVE4 = 2, | ||
OPEN_ARGS_CREATE_MODE_EXCLUSIVE4_1 = 3 | ||
}; | ||
|
||
|
||
typedef open_arguments4 fattr4_open_arguments; | ||
pragma public fattr4_open_arguments; | ||
|
||
|
||
%/* | ||
% * Determine what OPEN supports. | ||
% */ | ||
const FATTR4_OPEN_ARGUMENTS = 86; | ||
|
||
|
||
|
||
|
||
const OPEN4_RESULT_NO_OPEN_STATEID = 0x00000010; | ||
|
||
|
||
/* | ||
* attributes for the delegation times being | ||
* cached and served by the "client" | ||
*/ | ||
typedef nfstime4 fattr4_time_deleg_access; | ||
typedef nfstime4 fattr4_time_deleg_modify; | ||
pragma public fattr4_time_deleg_access; | ||
pragma public fattr4_time_deleg_modify; | ||
|
||
|
||
%/* | ||
% * New RECOMMENDED Attribute for | ||
% * delegation caching of times | ||
% */ | ||
const FATTR4_TIME_DELEG_ACCESS = 84; | ||
const FATTR4_TIME_DELEG_MODIFY = 85; | ||
|
||
|
||
|
||
/* new flags for share_access field of OPEN4args */ | ||
const OPEN4_SHARE_ACCESS_WANT_DELEG_MASK = 0xFF00; | ||
const OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE = 0x0000; | ||
const OPEN4_SHARE_ACCESS_WANT_READ_DELEG = 0x0100; | ||
const OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG = 0x0200; | ||
const OPEN4_SHARE_ACCESS_WANT_ANY_DELEG = 0x0300; | ||
const OPEN4_SHARE_ACCESS_WANT_NO_DELEG = 0x0400; | ||
const OPEN4_SHARE_ACCESS_WANT_CANCEL = 0x0500; | ||
|
||
const OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL = 0x10000; | ||
const OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED = 0x20000; | ||
const OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS = 0x100000; | ||
const OPEN4_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION = 0x200000; | ||
|
||
enum open_delegation_type4 { | ||
OPEN_DELEGATE_NONE = 0, | ||
OPEN_DELEGATE_READ = 1, | ||
OPEN_DELEGATE_WRITE = 2, | ||
OPEN_DELEGATE_NONE_EXT = 3, /* new to v4.1 */ | ||
OPEN_DELEGATE_READ_ATTRS_DELEG = 4, | ||
OPEN_DELEGATE_WRITE_ATTRS_DELEG = 5 | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.