diff options
| -rw-r--r-- | fs/nfs/delegation.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index dd25c2aec375..321a66bc3846 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c | |||
| @@ -398,12 +398,11 @@ int nfs_inode_return_delegation(struct inode *inode) | |||
| 398 | return err; | 398 | return err; |
| 399 | } | 399 | } |
| 400 | 400 | ||
| 401 | static void nfs_mark_return_delegation(struct nfs_delegation *delegation) | 401 | static void nfs_mark_return_delegation(struct nfs_server *server, |
| 402 | struct nfs_delegation *delegation) | ||
| 402 | { | 403 | { |
| 403 | struct nfs_client *clp = NFS_SERVER(delegation->inode)->nfs_client; | ||
| 404 | |||
| 405 | set_bit(NFS_DELEGATION_RETURN, &delegation->flags); | 404 | set_bit(NFS_DELEGATION_RETURN, &delegation->flags); |
| 406 | set_bit(NFS4CLNT_DELEGRETURN, &clp->cl_state); | 405 | set_bit(NFS4CLNT_DELEGRETURN, &server->nfs_client->cl_state); |
| 407 | } | 406 | } |
| 408 | 407 | ||
| 409 | /** | 408 | /** |
| @@ -441,7 +440,7 @@ static void nfs_mark_return_all_delegation_types(struct nfs_server *server, | |||
| 441 | if ((delegation->type == (FMODE_READ|FMODE_WRITE)) && !(flags & FMODE_WRITE)) | 440 | if ((delegation->type == (FMODE_READ|FMODE_WRITE)) && !(flags & FMODE_WRITE)) |
| 442 | continue; | 441 | continue; |
| 443 | if (delegation->type & flags) | 442 | if (delegation->type & flags) |
| 444 | nfs_mark_return_delegation(delegation); | 443 | nfs_mark_return_delegation(server, delegation); |
| 445 | } | 444 | } |
| 446 | } | 445 | } |
| 447 | 446 | ||
| @@ -508,7 +507,7 @@ static void nfs_mark_return_unreferenced_delegations(struct nfs_server *server) | |||
| 508 | list_for_each_entry_rcu(delegation, &server->delegations, super_list) { | 507 | list_for_each_entry_rcu(delegation, &server->delegations, super_list) { |
| 509 | if (test_and_clear_bit(NFS_DELEGATION_REFERENCED, &delegation->flags)) | 508 | if (test_and_clear_bit(NFS_DELEGATION_REFERENCED, &delegation->flags)) |
| 510 | continue; | 509 | continue; |
| 511 | nfs_mark_return_delegation(delegation); | 510 | nfs_mark_return_delegation(server, delegation); |
| 512 | } | 511 | } |
| 513 | } | 512 | } |
| 514 | 513 | ||
| @@ -539,7 +538,8 @@ void nfs_expire_unreferenced_delegations(struct nfs_client *clp) | |||
| 539 | int nfs_async_inode_return_delegation(struct inode *inode, | 538 | int nfs_async_inode_return_delegation(struct inode *inode, |
| 540 | const nfs4_stateid *stateid) | 539 | const nfs4_stateid *stateid) |
| 541 | { | 540 | { |
| 542 | struct nfs_client *clp = NFS_SERVER(inode)->nfs_client; | 541 | struct nfs_server *server = NFS_SERVER(inode); |
| 542 | struct nfs_client *clp = server->nfs_client; | ||
| 543 | struct nfs_delegation *delegation; | 543 | struct nfs_delegation *delegation; |
| 544 | 544 | ||
| 545 | rcu_read_lock(); | 545 | rcu_read_lock(); |
| @@ -549,7 +549,7 @@ int nfs_async_inode_return_delegation(struct inode *inode, | |||
| 549 | rcu_read_unlock(); | 549 | rcu_read_unlock(); |
| 550 | return -ENOENT; | 550 | return -ENOENT; |
| 551 | } | 551 | } |
| 552 | nfs_mark_return_delegation(delegation); | 552 | nfs_mark_return_delegation(server, delegation); |
| 553 | rcu_read_unlock(); | 553 | rcu_read_unlock(); |
| 554 | 554 | ||
| 555 | nfs_delegation_run_state_manager(clp); | 555 | nfs_delegation_run_state_manager(clp); |
