#
716a8bc7 |
| 30-Nov-2020 |
Trond Myklebust <trond.myklebust@hammerspace.com> |
nfsd: Record NFSv4 pre/post-op attributes as non-atomic
For the case of NFSv4, specify to the client that the pre/post-op attributes were not recorded atomically with the main operation.
Signed-off
nfsd: Record NFSv4 pre/post-op attributes as non-atomic
For the case of NFSv4, specify to the client that the pre/post-op attributes were not recorded atomically with the main operation.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
#
b2140338 |
| 30-Nov-2020 |
J. Bruce Fields <bfields@redhat.com> |
nfsd: simplify nfsd4_change_info
It doesn't make sense to carry all these extra fields around. Just make everything into change attribute from the start.
This is just cleanup, there should be no c
nfsd: simplify nfsd4_change_info
It doesn't make sense to carry all these extra fields around. Just make everything into change attribute from the start.
This is just cleanup, there should be no change in behavior.
Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
#
5cfc822f |
| 04-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Remove macros that are no longer used
Now that all the NFSv4 decoder functions have been converted to make direct calls to the xdr helpers, remove the unused C macros.
Signed-off-by: Chuck Le
NFSD: Remove macros that are no longer used
Now that all the NFSv4 decoder functions have been converted to make direct calls to the xdr helpers, remove the unused C macros.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
#
3a237b4a |
| 22-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Make nfsd4_ops::opnum a u32
Avoid passing a "pointer to int" argument to xdr_stream_decode_u32.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
|
#
e8febea7 |
| 04-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Replace READ* macros in nfsd4_decode_copy()
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
|
#
523ec6ed |
| 02-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Add a helper to decode state_protect4_a
Refactor for clarity.
Also, remove a stale comment. Commit ed94164398c9 ("nfsd: implement machine credential support for some operations") added suppor
NFSD: Add a helper to decode state_protect4_a
Refactor for clarity.
Also, remove a stale comment. Commit ed94164398c9 ("nfsd: implement machine credential support for some operations") added support for SP4_MACH_CRED, so state_protect_a is no longer completely ignored.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
#
1708e50b |
| 16-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Add helper to decode OPEN's open_claim4 argument
Refactor for clarity.
Note that op_fname is the only instance of an NFSv4 filename stored in a struct xdr_netobj. Convert it to a u32/char * p
NFSD: Add helper to decode OPEN's open_claim4 argument
Refactor for clarity.
Note that op_fname is the only instance of an NFSv4 filename stored in a struct xdr_netobj. Convert it to a u32/char * pair so that the new nfsd4_decode_filename() helper can be used.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
#
c1346a12 |
| 03-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Replace the internals of the READ_BUF() macro
Convert the READ_BUF macro in nfs4xdr.c from open code to instead use the new xdr_stream-style decoders already in use by the encode side (and by
NFSD: Replace the internals of the READ_BUF() macro
Convert the READ_BUF macro in nfs4xdr.c from open code to instead use the new xdr_stream-style decoders already in use by the encode side (and by the in-kernel NFS client implementation). Once this conversion is done, each individual NFSv4 argument decoder can be independently cleaned up to replace these macros with C code.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
#
788f7183 |
| 05-Nov-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Add common helpers to decode void args and encode void results
Start off the conversion to xdr_stream by de-duplicating the functions that decode void arguments and encode void results.
Signe
NFSD: Add common helpers to decode void args and encode void results
Start off the conversion to xdr_stream by de-duplicating the functions that decode void arguments and encode void results.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
Revision tags: v5.8.16, v5.8.15, v5.9, v5.8.14 |
|
#
dcc46991 |
| 01-Oct-2020 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Encoder and decoder functions are always present
nfsd_dispatch() is a hot path. Let's optimize the XDR method calls for the by-far common case, which is that the XDR methods are indeed present
NFSD: Encoder and decoder functions are always present
nfsd_dispatch() is a hot path. Let's optimize the XDR method calls for the by-far common case, which is that the XDR methods are indeed present.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|
Revision tags: v5.8.13, v5.8.12, v5.8.11, v5.8.10, v5.8.9, v5.8.8, v5.8.7, v5.8.6, v5.4.62, v5.8.5, v5.8.4, v5.4.61, v5.8.3, v5.4.60, v5.8.2, v5.4.59, v5.8.1, v5.4.58, v5.4.57, v5.4.56, v5.8, v5.7.12, v5.4.55, v5.7.11, v5.4.54, v5.7.10, v5.4.53, v5.4.52, v5.7.9, v5.7.8, v5.4.51, v5.4.50, v5.7.7, v5.4.49, v5.7.6 |
|
#
6178713b |
| 23-Jun-2020 |
Frank van der Linden <fllinden@amazon.com> |
nfsd: add structure definitions for xattr requests / responses
Add the structures used in extended attribute request / response handling.
Signed-off-by: Frank van der Linden <fllinden@amazon.com> S
nfsd: add structure definitions for xattr requests / responses
Add the structures used in extended attribute request / response handling.
Signed-off-by: Frank van der Linden <fllinden@amazon.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
show more ...
|
Revision tags: v5.7.5, v5.4.48, v5.7.4, v5.7.3, v5.4.47, v5.4.46, v5.7.2, v5.4.45, v5.7.1, v5.4.44, v5.7, v5.4.43, v5.4.42, v5.4.41, v5.4.40, v5.4.39, v5.4.38, v5.4.37, v5.4.36, v5.4.35, v5.4.34, v5.4.33, v5.4.32, v5.4.31, v5.4.30, v5.4.29, v5.6, v5.4.28, v5.4.27, v5.4.26, v5.4.25, v5.4.24, v5.4.23, v5.4.22, v5.4.21, v5.4.20, v5.4.19, v5.4.18, v5.4.17, v5.4.16, v5.5, v5.4.15, v5.4.14, v5.4.13, v5.4.12, v5.4.11, v5.4.10, v5.4.9, v5.4.8, v5.4.7, v5.4.6, v5.4.5, v5.4.4, v5.4.3, v5.3.15, v5.4.2, v5.4.1, v5.3.14, v5.4, v5.3.13, v5.3.12, v5.3.11, v5.3.10, v5.3.9, v5.3.8, v5.3.7, v5.3.6 |
|
#
ce0887ac |
| 09-Oct-2019 |
Olga Kornievskaia <kolga@netapp.com> |
NFSD add nfs4 inter ssc to nfsd4_copy
Given a universal address, mount the source server from the destination server. Use an internal mount. Call the NFS client nfs42_ssc_open to obtain the NFS str
NFSD add nfs4 inter ssc to nfsd4_copy
Given a universal address, mount the source server from the destination server. Use an internal mount. Call the NFS client nfs42_ssc_open to obtain the NFS struct file suitable for nfsd_copy_range.
Ability to do "inter" server-to-server depends on the an nfsd kernel parameter "inter_copy_offload_enable".
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
show more ...
|
Revision tags: v5.3.5 |
|
#
b9e8638e |
| 07-Oct-2019 |
Olga Kornievskaia <olga.kornievskaia@gmail.com> |
NFSD: allow inter server COPY to have a STALE source server fh
The inter server to server COPY source server filehandle is a foreign filehandle as the COPY is sent to the destination server.
Signed
NFSD: allow inter server COPY to have a STALE source server fh
The inter server to server COPY source server filehandle is a foreign filehandle as the COPY is sent to the destination server.
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
show more ...
|
Revision tags: v5.3.4, v5.3.3, v5.3.2, v5.3.1, v5.3, v5.2.14, v5.3-rc8, v5.2.13, v5.2.12, v5.2.11, v5.2.10, v5.2.9, v5.2.8, v5.2.7, v5.2.6, v5.2.5, v5.2.4, v5.2.3, v5.2.2, v5.2.1, v5.2, v5.1.16, v5.1.15, v5.1.14, v5.1.13, v5.1.12, v5.1.11, v5.1.10, v5.1.9, v5.1.8, v5.1.7, v5.1.6, v5.1.5, v5.1.4, v5.1.3, v5.1.2, v5.1.1, v5.0.14, v5.1, v5.0.13, v5.0.12, v5.0.11, v5.0.10, v5.0.9, v5.0.8, v5.0.7, v5.0.6, v5.0.5, v5.0.4, v5.0.3, v4.19.29, v5.0.2, v4.19.28, v5.0.1, v4.19.27, v5.0, v4.19.26, v4.19.25, v4.19.24, v4.19.23, v4.19.22, v4.19.21, v4.19.20, v4.19.19, v4.19.18, v4.19.17, v4.19.16, v4.19.15, v4.19.14, v4.19.13, v4.19.12, v4.19.11, v4.19.10, v4.19.9, v4.19.8, v4.19.7, v4.19.6, v4.19.5, v4.19.4, v4.18.20, v4.19.3, v4.18.19, v4.19.2, v4.18.18, v4.18.17, v4.19.1, v4.19, v4.18.16, v4.18.15, v4.18.14, v4.18.13, v4.18.12, v4.18.11, v4.18.10, v4.18.9 |
|
#
51100d2b |
| 13-Sep-2018 |
Olga Kornievskaia <kolga@netapp.com> |
NFSD generalize nfsd4_compound_state flag names
Allow for sid_flag field non-stateid use.
Signed-off-by: Andy Adamson <andros@netapp.com>
|
#
624322f1 |
| 04-Oct-2019 |
Olga Kornievskaia <olga.kornievskaia@gmail.com> |
NFSD add COPY_NOTIFY operation
Introducing the COPY_NOTIFY operation.
Create a new unique stateid that will keep track of the copy state and the upcoming READs that will use that stateid. Each asso
NFSD add COPY_NOTIFY operation
Introducing the COPY_NOTIFY operation.
Create a new unique stateid that will keep track of the copy state and the upcoming READs that will use that stateid. Each associated parent stateid has a list of copy notify stateids. A copy notify structure makes a copy of the parent stateid and a clientid and will use it to look up the parent stateid during the READ request (suggested by Trond Myklebust <trond.myklebust@hammerspace.com>).
At nfs4_put_stid() time, we walk the list of the associated copy notify stateids and delete them.
Laundromat thread will traverse globally stored copy notify stateid in idr and notice if any haven't been referenced in the lease period, if so, it'll remove them.
Return single netaddr to advertise to the copy.
Suggested-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: Andy Adamson <andros@netapp.com>
show more ...
|
#
51911868 |
| 08-Aug-2019 |
Olga Kornievskaia <olga.kornievskaia@gmail.com> |
NFSD COPY_NOTIFY xdr
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
|
#
84e1b21d |
| 13-Sep-2019 |
Olga Kornievskaia <olga.kornievskaia@gmail.com> |
NFSD add ca_source_server<> to COPY
Decode the ca_source_server list that's sent but only use the first one. Presence of non-zero list indicates an "inter" copy.
Signed-off-by: Andy Adamson <andros
NFSD add ca_source_server<> to COPY
Decode the ca_source_server list that's sent but only use the first one. Presence of non-zero list indicates an "inter" copy.
Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
show more ...
|
#
5c4583b2 |
| 18-Aug-2019 |
Jeff Layton <jeff.layton@primarydata.com> |
nfsd: hook up nfs4_preprocess_stateid_op to the nfsd_file cache
Have nfs4_preprocess_stateid_op pass back a nfsd_file instead of a filp. Since we now presume that the struct file will be persistent
nfsd: hook up nfs4_preprocess_stateid_op to the nfsd_file cache
Have nfs4_preprocess_stateid_op pass back a nfsd_file instead of a filp. Since we now presume that the struct file will be persistent in most cases, we can stop fiddling with the raparms in the read code. This also means that we don't really care about the rd_tmp_file field anymore.
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|
#
79123444 |
| 05-Jun-2019 |
J. Bruce Fields <bfields@redhat.com> |
nfsd: decode implementation id
Decode the implementation ID and display in nfsd/clients/#/info. It may be help identify the client. It won't be used otherwise.
(When this went into the protocol,
nfsd: decode implementation id
Decode the implementation ID and display in nfsd/clients/#/info. It may be help identify the client. It won't be used otherwise.
(When this went into the protocol, I thought the implementation ID would be a slippery slope towards implementation-specific workarounds as with the http user-agent. But I guess I was wrong, the risk seems pretty low now.)
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|
#
bdba5368 |
| 05-Jun-2019 |
J. Bruce Fields <bfields@redhat.com> |
nfsd: use 64-bit seconds fields in nfsd v4 code
After commit 95582b008388 "vfs: change inode times to use struct timespec64" there are spots in the NFSv4 decoding where we decode the protocol into a
nfsd: use 64-bit seconds fields in nfsd v4 code
After commit 95582b008388 "vfs: change inode times to use struct timespec64" there are spots in the NFSv4 decoding where we decode the protocol into a struct timeval and then convert that into a timeval64.
That's unnecesary in the NFSv4 case since the on-the-wire protocol also uses 64-bit values. So just fix up our code to use timeval64 everywhere.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|
Revision tags: v4.18.7, v4.18.6, v4.18.5, v4.17.18, v4.18.4, v4.18.3, v4.17.17, v4.18.2, v4.17.16, v4.17.15, v4.18.1, v4.18, v4.17.14, v4.17.13, v4.17.12, v4.17.11, v4.17.10, v4.17.9 |
|
#
e0639dc5 |
| 20-Jul-2018 |
Olga Kornievskaia <kolga@netapp.com> |
NFSD introduce async copy feature
Upon receiving a request for async copy, create a new kthread. If we get asynchronous request, make sure to copy the needed arguments/state from the stack before s
NFSD introduce async copy feature
Upon receiving a request for async copy, create a new kthread. If we get asynchronous request, make sure to copy the needed arguments/state from the stack before starting the copy. Then start the thread and reply back to the client indicating copy is asynchronous.
nfsd_copy_file_range() will copy in a loop over the total number of bytes is needed to copy. In case a failure happens in the middle, we ignore the error and return how much we copied so far. Once done creating a workitem for the callback workqueue and send CB_OFFLOAD with the results.
The lifetime of the copy stateid is bound to the vfs copy. This way we don't need to keep the nfsd_net structure for the callback. We could keep it around longer so that an OFFLOAD_STATUS that came late would still get results, but clients should be able to deal without that.
We handle OFFLOAD_CANCEL by sending a signal to the copy thread and calling kthread_stop.
A client should cancel any ongoing copies before calling DESTROY_CLIENT; if not, we return a CLIENT_BUSY error.
If the client is destroyed for some other reason (lease expiration, or server shutdown), we must clean up any ongoing copies ourselves.
Signed-off-by: Olga Kornievskaia <kolga@netapp.com> [colin.king@canonical.com: fix leak in error case] [bfields@fieldses.org: remove signalling, merge patches] Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|
#
6308bc98 |
| 20-Jul-2018 |
Olga Kornievskaia <kolga@netapp.com> |
NFSD OFFLOAD_STATUS xdr
Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
|
#
9eb190fc |
| 20-Jul-2018 |
Olga Kornievskaia <kolga@netapp.com> |
NFSD CB_OFFLOAD xdr
Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
|
Revision tags: v4.17.8, v4.17.7, v4.17.6, v4.17.5, v4.17.4, v4.17.3, v4.17.2, v4.17.1, v4.17, v4.16 |
|
#
880a3a53 |
| 21-Mar-2018 |
J. Bruce Fields <bfields@redhat.com> |
nfsd: fix incorrect umasks
We're neglecting to clear the umask after it's set, which can cause a later unrelated rpc to (incorrectly) use the same umask if it happens to be processed by the same thr
nfsd: fix incorrect umasks
We're neglecting to clear the umask after it's set, which can cause a later unrelated rpc to (incorrectly) use the same umask if it happens to be processed by the same thread.
There's a more subtle problem here too:
An NFSv4 compound request is decoded all in one pass before any operations are executed.
Currently we're setting current->fs->umask at the time we decode the compound. In theory a single compound could contain multiple creates each setting a umask. In that case we'd end up using whichever umask was passed in the *last* operation as the umask for all the creates, whether that was correct or not.
So, we should just be saving the umask at decode time and waiting to set it until we actually process the corresponding operation.
In practice it's unlikely any client would do multiple creates in a single compound. And even if it did they'd likely be from the same process (hence carry the same umask). So this is a little academic, but we should get it right anyway.
Fixes: 47057abde515 (nfsd: add support for the umask attribute) Cc: stable@vger.kernel.org Reported-by: Lucash Stach <l.stach@pengutronix.de> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|
#
38a70315 |
| 27-Mar-2018 |
Chuck Lever <chuck.lever@oracle.com> |
NFSD: Clean up legacy NFS SYMLINK argument XDR decoders
Move common code in NFSD's legacy SYMLINK decoders into a helper. The immediate benefits include:
- one fewer data copies on transports that
NFSD: Clean up legacy NFS SYMLINK argument XDR decoders
Move common code in NFSD's legacy SYMLINK decoders into a helper. The immediate benefits include:
- one fewer data copies on transports that support DDP - consistent error checking across all versions - reduction of code duplication - support for both legal forms of SYMLINK requests on RDMA transports for all versions of NFS (in particular, NFSv2, for completeness)
In the long term, this helper is an appropriate spot to perform a per-transport call-out to fill the pathname argument using, say, RDMA Reads.
Filling the pathname in the proc function also means that eventually the incoming filehandle can be interpreted so that filesystem- specific memory can be allocated as a sink for the pathname argument, rather than using anonymous pages.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
show more ...
|