]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFS: remove nfs_inode_detach_delegation
authorChristoph Hellwig <hch@lst.de>
Wed, 7 Jan 2026 07:26:56 +0000 (08:26 +0100)
committerAnna Schumaker <anna.schumaker@oracle.com>
Tue, 20 Jan 2026 19:49:45 +0000 (14:49 -0500)
Fold it into the only caller.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
fs/nfs/delegation.c

index 937d5d9f933f3672123a390986e9b505a5bc8f24..86b8da1e259891b40fb56dfe878513b1e54ad7db 100644 (file)
@@ -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);
 }
 
 /**