diff options
| author | Christoph Hellwig <hch@lst.de> | 2026-01-07 08:26:56 +0100 |
|---|---|---|
| committer | Anna Schumaker <anna.schumaker@oracle.com> | 2026-01-20 14:49:45 -0500 |
| commit | ee443e116151fbcf08e2296b21f28f942b18c2ed (patch) | |
| tree | 6fc13f12bf6db84c611b80d0bb3f87edbe3d9277 /fs | |
| parent | c6c9b9bc9f6aaba1d518c7b4bcdbbd9171ce82cb (diff) | |
NFS: remove nfs_inode_detach_delegation
Fold it into the only caller.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/nfs/delegation.c | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index 937d5d9f933f..86b8da1e2598 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c @@ -402,21 +402,6 @@ static struct nfs_delegation *nfs_detach_delegation(struct nfs_inode *nfsi, return delegation; } -static struct nfs_delegation * -nfs_inode_detach_delegation(struct inode *inode) -{ - struct nfs_inode *nfsi = NFS_I(inode); - struct nfs_server *server = NFS_SERVER(inode); - struct nfs_delegation *delegation; - - rcu_read_lock(); - delegation = rcu_dereference(nfsi->delegation); - if (delegation != NULL) - delegation = nfs_detach_delegation(nfsi, delegation, server); - rcu_read_unlock(); - return delegation; -} - static void nfs_update_delegation_cred(struct nfs_delegation *delegation, const struct cred *cred) @@ -774,15 +759,23 @@ int nfs_client_return_marked_delegations(struct nfs_client *clp) */ void nfs_inode_evict_delegation(struct inode *inode) { + struct nfs_inode *nfsi = NFS_I(inode); + struct nfs_server *server = NFS_SERVER(inode); struct nfs_delegation *delegation; - delegation = nfs_inode_detach_delegation(inode); - if (delegation != NULL) { - set_bit(NFS_DELEGATION_RETURNING, &delegation->flags); - set_bit(NFS_DELEGATION_INODE_FREEING, &delegation->flags); - nfs_do_return_delegation(inode, delegation, 1); - nfs_free_delegation(NFS_SERVER(inode), delegation); - } + rcu_read_lock(); + delegation = rcu_dereference(nfsi->delegation); + if (delegation) + delegation = nfs_detach_delegation(nfsi, delegation, server); + rcu_read_unlock(); + + if (!delegation) + return; + + set_bit(NFS_DELEGATION_RETURNING, &delegation->flags); + set_bit(NFS_DELEGATION_INODE_FREEING, &delegation->flags); + nfs_do_return_delegation(inode, delegation, 1); + nfs_free_delegation(server, delegation); } /** |
