]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFS: cleanup nfs_inode_reclaim_delegation
authorChristoph Hellwig <hch@lst.de>
Fri, 18 Jul 2025 08:14:47 +0000 (10:14 +0200)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 22 Jul 2025 12:10:41 +0000 (08:10 -0400)
Reduce a level of indentation for most of the code in this function.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/r/20250718081509.2607553-3-hch@lst.de
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/delegation.c

index 6f136c47eed7f1801af337f0e88f1a6bf477d0c6..568d2e6d65fab5d28bb28bfc4dbf5bfc8c02352c 100644 (file)
@@ -237,34 +237,34 @@ void nfs_inode_reclaim_delegation(struct inode *inode, const struct cred *cred,
 
        rcu_read_lock();
        delegation = rcu_dereference(NFS_I(inode)->delegation);
-       if (delegation != NULL) {
-               spin_lock(&delegation->lock);
-               nfs4_stateid_copy(&delegation->stateid, stateid);
-               delegation->type = type;
-               delegation->pagemod_limit = pagemod_limit;
-               oldcred = delegation->cred;
-               delegation->cred = get_cred(cred);
-               switch (deleg_type) {
-               case NFS4_OPEN_DELEGATE_READ_ATTRS_DELEG:
-               case NFS4_OPEN_DELEGATE_WRITE_ATTRS_DELEG:
-                       set_bit(NFS_DELEGATION_DELEGTIME, &delegation->flags);
-                       break;
-               default:
-                       clear_bit(NFS_DELEGATION_DELEGTIME, &delegation->flags);
-               }
-               clear_bit(NFS_DELEGATION_NEED_RECLAIM, &delegation->flags);
-               if (test_and_clear_bit(NFS_DELEGATION_REVOKED,
-                                      &delegation->flags))
-                       atomic_long_inc(&nfs_active_delegations);
-               spin_unlock(&delegation->lock);
-               rcu_read_unlock();
-               put_cred(oldcred);
-               trace_nfs4_reclaim_delegation(inode, type);
-       } else {
+       if (!delegation) {
                rcu_read_unlock();
                nfs_inode_set_delegation(inode, cred, type, stateid,
                                         pagemod_limit, deleg_type);
+               return;
+       }
+
+       spin_lock(&delegation->lock);
+       nfs4_stateid_copy(&delegation->stateid, stateid);
+       delegation->type = type;
+       delegation->pagemod_limit = pagemod_limit;
+       oldcred = delegation->cred;
+       delegation->cred = get_cred(cred);
+       switch (deleg_type) {
+       case NFS4_OPEN_DELEGATE_READ_ATTRS_DELEG:
+       case NFS4_OPEN_DELEGATE_WRITE_ATTRS_DELEG:
+               set_bit(NFS_DELEGATION_DELEGTIME, &delegation->flags);
+               break;
+       default:
+               clear_bit(NFS_DELEGATION_DELEGTIME, &delegation->flags);
        }
+       clear_bit(NFS_DELEGATION_NEED_RECLAIM, &delegation->flags);
+       if (test_and_clear_bit(NFS_DELEGATION_REVOKED, &delegation->flags))
+               atomic_long_inc(&nfs_active_delegations);
+       spin_unlock(&delegation->lock);
+       rcu_read_unlock();
+       put_cred(oldcred);
+       trace_nfs4_reclaim_delegation(inode, type);
 }
 
 static int nfs_do_return_delegation(struct inode *inode,