diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-10 11:23:15 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-10 11:54:36 -0500 |
commit | ad1e3968292e3af1c49ccbd0fb7d2674010f8efc (patch) | |
tree | 5eee458017d2deeff73c27740d1bddd742a05990 /fs/nfs/delegation.c | |
parent | 4fc8796d23819da814ec25b7793bde8f104f1a2a (diff) |
NFSv4.0: Re-establish the callback channel on NFS4ERR_CB_PATHDOWN
When the NFSv4.0 server tells us that it can no-longer talk to us
on the callback channel, we should attempt a new SETCLIENTID in
order to re-transmit the callback channel information.
Note that as long as we do not change the boot verifier, this is
a safe procedure; the server is required to keep our state.
Also move the function nfs_handle_cb_pathdown to fs/nfs/nfs4state.c,
and change the name in order to mark it as being specific to NFSv4.0.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/delegation.c')
-rw-r--r-- | fs/nfs/delegation.c | 17 |
1 files changed, 0 insertions, 17 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index e27c0972f94e..12de88353eeb 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c | |||
@@ -453,11 +453,6 @@ static void nfs_client_mark_return_all_delegation_types(struct nfs_client *clp, | |||
453 | rcu_read_unlock(); | 453 | rcu_read_unlock(); |
454 | } | 454 | } |
455 | 455 | ||
456 | static void nfs_client_mark_return_all_delegations(struct nfs_client *clp) | ||
457 | { | ||
458 | nfs_client_mark_return_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); | ||
459 | } | ||
460 | |||
461 | static void nfs_delegation_run_state_manager(struct nfs_client *clp) | 456 | static void nfs_delegation_run_state_manager(struct nfs_client *clp) |
462 | { | 457 | { |
463 | if (test_bit(NFS4CLNT_DELEGRETURN, &clp->cl_state)) | 458 | if (test_bit(NFS4CLNT_DELEGRETURN, &clp->cl_state)) |
@@ -498,18 +493,6 @@ void nfs_expire_all_delegations(struct nfs_client *clp) | |||
498 | nfs_expire_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); | 493 | nfs_expire_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); |
499 | } | 494 | } |
500 | 495 | ||
501 | /** | ||
502 | * nfs_handle_cb_pathdown - return all delegations after NFS4ERR_CB_PATH_DOWN | ||
503 | * @clp: client to process | ||
504 | * | ||
505 | */ | ||
506 | void nfs_handle_cb_pathdown(struct nfs_client *clp) | ||
507 | { | ||
508 | if (clp == NULL) | ||
509 | return; | ||
510 | nfs_client_mark_return_all_delegations(clp); | ||
511 | } | ||
512 | |||
513 | static void nfs_mark_return_unreferenced_delegations(struct nfs_server *server) | 496 | static void nfs_mark_return_unreferenced_delegations(struct nfs_server *server) |
514 | { | 497 | { |
515 | struct nfs_delegation *delegation; | 498 | struct nfs_delegation *delegation; |