]> www.infradead.org Git - users/hch/misc.git/commitdiff
NFS: cleanup nfs_inode_reclaim_delegation
authorChristoph Hellwig <hch@lst.de>
Tue, 8 Jul 2025 08:32:07 +0000 (10:32 +0200)
committerChristoph Hellwig <hch@lst.de>
Tue, 8 Jul 2025 08:41:46 +0000 (10:41 +0200)
Reduce a level of indentation for most of the code in this function.

Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/nfs/delegation.c

index 10ef46e29b2544920c026f023885301d5d8e22cd..9c59b5b0c48bdb13118c876f07032bc36643c6fe 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,