16 Mar, 2020
1 commit
-
When we receive a CB_RECALL_ANY that asks us to return flexfiles
layouts, we iterate through all the layouts and look at whether or
not there are active open file descriptors that might need them
for I/O. If there are no such descriptors, we return the layouts.Signed-off-by: Trond Myklebust
04 Nov, 2019
1 commit
-
Convert the NFSv4 callbacks to use struct timestamp64, rather than
truncating times to 32-bit values.Signed-off-by: Trond Myklebust
10 Aug, 2018
1 commit
-
Signed-off-by: Olga Kornievskaia
Signed-off-by: Anna Schumaker
02 Nov, 2017
1 commit
-
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.By default all files without license information are under the default
license of the kernel, which is GPL version 2.Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if
Reviewed-by: Philippe Ombredanne
Reviewed-by: Thomas Gleixner
Signed-off-by: Greg Kroah-Hartman
15 May, 2017
1 commit
-
Instead declare all functions with the proper methods signature.
Signed-off-by: Christoph Hellwig
Reviewed-by: Jeff Layton
Acked-by: Trond Myklebust
23 Sep, 2016
1 commit
-
For now, the callback doesn't do anything. Support for that will be
added in later patches.Signed-off-by: Jeff Layton
Signed-off-by: Anna Schumaker
20 Sep, 2016
2 commits
-
Add support for the kernel parameter nfs.callback_nr_threads to set
the number of threads that will be assigned to the callback channel.Add support for the kernel parameter nfs.nfs.max_session_cb_slots
to set the maximum size of the callback channel slot table.Signed-off-by: Trond Myklebust
Signed-off-by: Anna Schumaker -
This will allow us to bump the number of callback threads at will.
Signed-off-by: Trond Myklebust
Signed-off-by: Anna Schumaker
25 Jan, 2016
1 commit
-
Hook the callback channel into the same session management machinery
as we use for the forward channel.Signed-off-by: Trond Myklebust
22 Oct, 2015
3 commits
-
Commit 778be232a207 "NFS do not find client in NFSv4 pg_authenticate" has remove
the define and using of nfs4_set_callback_sessionid(), and
commit 36281caa839f "NFSv4: Further clean-ups of delegation stateid validation"
has update the checking of stateid, and move the code to nfs4proc.c.This patch remove those function defines left in callback.h
Signed-off-by: Kinglong Mee
Signed-off-by: Trond Myklebust -
Commit bbe0a3aa4e22 "NFS: make nfs_callback_tcpport per network context" has
make nfs_callback_tcpport per network, but left the global nfs_callback_tcpport,
remove it.Signed-off-by: Kinglong Mee
Signed-off-by: Trond Myklebust -
Commit c36fca52f5 "NFS refactor nfs_find_client and reference client
across callback processing" has store clp in cb_process_state
which is set in cb_sequence.So that, it's unneeded to store address pointer in any callback arguments.
Signed-off-by: Kinglong Mee
Signed-off-by: Trond Myklebust
09 Jun, 2013
2 commits
-
NFS v4.2 adds a CB_OFFLOAD operation used by COPY and WRITE_PLUS. Since
neither of these operations have been implemented yet, simply return
NFS4ERR_NOTSUPP.Signed-off-by: Bryan Schumaker
Signed-off-by: Trond Myklebust -
I found a few places that hardcode the minor version number rather than
making it dependent on the protocol the callback came in over. This
patch makes it easier to add new minor versions in the future.Signed-off-by: Bryan Schumaker
Signed-off-by: Trond Myklebust
06 Dec, 2012
2 commits
-
Coalesce nfs4_check_drain_bc_complete and nfs4_check_drain_fc_complete
into a single function that can be called when the slot table is known
to be empty, then change nfs4_callback_free_slot() and nfs4_free_slot()
to use it.Signed-off-by: Trond Myklebust
-
Don't confuse the table size and the target_highest_slotid...
Signed-off-by: Trond Myklebust
02 Oct, 2012
4 commits
-
Sparse warning:
fs/nfs/super.c:2638:16: sparse: symbol 'nfs_callback_tcpport' was not
declared. Should it be static?Reported-by: Fengguang Wu
Signed-off-by: Stanislav Kinsbursky
Signed-off-by: Trond Myklebust -
Signed-off-by: Stanislav Kinsbursky
Signed-off-by: Trond Myklebust -
Signed-off-by: Stanislav Kinsbursky
Signed-off-by: Trond Myklebust -
Signed-off-by: Stanislav Kinsbursky
Signed-off-by: Trond Myklebust
31 Jul, 2012
1 commit
-
This patch exports symbols needed by the v4 module. In addition, I also
switch over to using IS_ENABLED() to check if CONFIG_NFS_V4 or
CONFIG_NFS_V4_MODULE are set.The module (nfs4.ko) will be created in the same directory as nfs.ko and
will be automatically loaded the first time you try to mount over NFS v4.Signed-off-by: Bryan Schumaker
Signed-off-by: Trond Myklebust
15 Feb, 2012
1 commit
-
It is perfectly legal to negotiate up to 2^32-1 slots in the protocol,
and with 10GigE, we are already seeing that 255 slots is far too limiting.Signed-off-by: Trond Myklebust
07 Feb, 2012
1 commit
-
Network namespace is taken from request transport and passed as a part of
cb_process_state structure.Signed-off-by: Stanislav Kinsbursky
Signed-off-by: Trond Myklebust
13 Jan, 2012
1 commit
-
This function returns a big endian value. The implementation in
fs/nfs/callback_proc.c is declared with "__be32" but the .h file uses
"unsigned" instead. It makes sparse complain:fs/nfs/callback_proc.c:232:8: error:
symbol 'nfs4_callback_layoutrecall' redeclared with different
type (originally declared at fs/nfs/callback.h:165) - different
base typesSigned-off-by: Dan Carpenter
Signed-off-by: Trond Myklebust
04 Aug, 2011
1 commit
-
Currently, there is no guarantee that we will call nfs4_cb_take_slot() even
though nfs4_callback_compound() will consistently call
nfs4_cb_free_slot() provided the cb_process_state has set the 'clp' field.
The result is that we can trigger the BUG_ON() upon the next call to
nfs4_cb_take_slot().This patch fixes the above problem by using the slot id that was taken in
the CB_SEQUENCE operation as a flag for whether or not we need to call
nfs4_cb_free_slot().
It also fixes an atomicity problem: we need to set tbl->highest_used_slotid
atomically with the check for NFS4_SESSION_DRAINING, otherwise we end up
racing with the various tests in nfs4_begin_drain_session().Cc: stable@kernel.org [2.6.38+]
Signed-off-by: Trond Myklebust
30 May, 2011
1 commit
-
Note: This functionlaity is incomplete as all layout segments referring to
the 'to be removed device id' need to be reaped, and all in flight I/O drained.[use be32 res in nfs4_callback_devicenotify]
[use nfs_client to qualify deviceid for cb_notify_deviceid]
[use global deviceid cache for CB_NOTIFY_DEVICEID]
[refactor device cache _lookup_deviceid]
[refactor device cache _find_get_deviceid]
Signed-off-by: Benny Halevy
[Bug in new global-device-cache code]
[layout_driver MUST set free_deviceid_node if using dev-cache]
Signed-off-by: Boaz Harrosh
Signed-off-by: Benny Halevy
26 Jan, 2011
1 commit
-
The information required to find the nfs_client cooresponding to the incoming
back channel request is contained in the NFS layer. Perform minimal checking
in the RPC layer pg_authenticate method, and push more detailed checking into
the NFS layer where the nfs_client can be found.Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust
07 Jan, 2011
5 commits
-
While here, update the code a bit.
Signed-off-by: Alexandros Batsakis
Signed-off-by: Fred Isaman
Signed-off-by: Trond Myklebust -
This is the xdr decoding for CB_LAYOUTRECALL.
Signed-off-by: Alexandros Batsakis
Signed-off-by: Dean Hildebrand
Signed-off-by: Marc Eshel
Signed-off-by: Andy Adamson
Signed-off-by: Benny Halevy
Signed-off-by: Fred Isaman
Signed-off-by: Trond Myklebust -
Currently session draining only drains the fore channel.
The back channel processing must also be drained.Use the back channel highest_slot_used to indicate that a callback is being
processed by the callback thread. Move the session complete to be per channel.When the session is draininig, wait for any current back channel processing
to complete and stop all new back channel processing by returning NFS4ERR_DELAY
to the back channel client.Drain the back channel, then the fore channel.
Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust -
Fixes a bug where the nfs_client could be freed during callback processing.
Refactor nfs_find_client to use minorversion specific means to locate the
correct nfs_client structure.In the NFS layer, V4.0 clients are found using the callback_ident field in the
CB_COMPOUND header. V4.1 clients are found using the sessionID in the
CB_SEQUENCE operation which is also compared against the sessionID associated
with the back channel thread after a successful CREATE_SESSION.Each of these methods finds the one an only nfs_client associated
with the incoming callback request - so nfs_find_client_next is not needed.In the RPC layer, the pg_authenticate call needs to find the nfs_client. For
the v4.0 callback service, the callback identifier has not been decoded so a
search by address, version, and minorversion is used. The sessionid for the
sessions based callback service has (usually) not been set for the
pg_authenticate on a CB_NULL call which can be sent prior to the return
of a CREATE_SESSION call, so the sessionid associated with the back channel
thread is not used to find the client in pg_authenticate for CB_NULL calls.Pass the referenced nfs_client to each CB_COMPOUND operation being proceesed
via the new cb_process_state structure. The reference is held across
cb_compound processing.Use the new cb_process_state struct to move the NFS4ERR_RETRY_UNCACHED_REP
processing from process_op into nfs4_callback_sequence where it belongs.Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust -
The sessions based callback service is started prior to the CREATE_SESSION call
so that it can handle CB_NULL requests which can be sent before the
CREATE_SESSION call returns and the session ID is known.Set the callback sessionid after a sucessful CREATE_SESSION.
Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust
10 Feb, 2010
1 commit
-
Drain the fore channel and reset the max_slots to the new value.
Signed-off-by: Andy Adamson
Signed-off-by: Trond Myklebust
06 Dec, 2009
2 commits
-
in NFSv4.1 the seqid part of a stateid in CB_RECALL must be 0
Signed-off-by: Alexandros Batsakis
Signed-off-by: Trond Myklebust -
For now the clients returns _all_ the delegations of the specificed type
it holdsSigned-off-by: Alexandros Batsakis
Signed-off-by: Trond Myklebust
18 Jun, 2009
5 commits
-
Change the type of cs_addr and csr_status to 'struct sockaddr' and
'__be32' since the cb_sequence processing function will use existing
functionality that expects these types.Signed-off-by: Ricardo Labiaga
Signed-off-by: Benny Halevy -
Currently, just free up any referring calls information.
Signed-off-by: Benny Halevy
[nfs41: fix csr_{,target}highestslotid]
Signed-off-by: Benny Halevy -
Signed-off-by: Benny Halevy
-
Note that this patch changes the nfsv4.0 behavior also when
CONFIG_NFS_V4_1 is not defined where NFS4ERR_MINOR_VERS_MISMATCH
will be returned if the client received a CB_COMPOUND
with minorversion != 0. Previously, it would have
returned NFS4ERR_OP_ILLEGAL for CB_SEQUENCE.
(or if the server is broken and sent OP_CB_GETATTR or OP_CB_RECALL
with minorversion!=0, they would have been processed normally.Signed-off-by: Benny Halevy
[nfs41: refactor op preprocessing out of process_op]
See http://linux-nfs.org/pipermail/pnfs/2009-June/007845.html
[nfs41: define CB_NOTIFY_DEVICEID as not supported]
Signed-off-by: Benny Halevy -
Signed-off-by: Benny Halevy