From: Christoph Hellwig Date: Wed, 7 Jan 2026 07:27:01 +0000 (+0100) Subject: NFS: open code nfs_delegation_need_return X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8cb32b9344f65dbdcb947745f812173d4bb65601;p=thirdparty%2Fkernel%2Fstable.git NFS: open code nfs_delegation_need_return There is only a single caller, and the function can be condensed into a single if statement, making it more clear what is being tested there. Signed-off-by: Christoph Hellwig Signed-off-by: Anna Schumaker --- diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index 7b05d661775b..bf1dcf186a47 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c @@ -591,22 +591,6 @@ out: return err; } -static bool nfs_delegation_need_return(struct nfs_delegation *delegation) -{ - bool ret = false; - - trace_nfs_delegation_need_return(delegation); - - if (test_and_clear_bit(NFS_DELEGATION_RETURN, &delegation->flags)) - ret = true; - if (test_bit(NFS_DELEGATION_RETURNING, &delegation->flags) || - test_bit(NFS_DELEGATION_RETURN_DELAYED, &delegation->flags) || - test_bit(NFS_DELEGATION_REVOKED, &delegation->flags)) - ret = false; - - return ret; -} - static int nfs_server_return_marked_delegations(struct nfs_server *server, void __always_unused *data) { @@ -641,11 +625,17 @@ restart: list_for_each_entry_from_rcu(delegation, &server->delegations, super_list) { struct inode *to_put = NULL; - if (!nfs_delegation_need_return(delegation)) { + trace_nfs_delegation_need_return(delegation); + + if (!test_and_clear_bit(NFS_DELEGATION_RETURN, &delegation->flags) || + test_bit(NFS_DELEGATION_RETURNING, &delegation->flags) || + test_bit(NFS_DELEGATION_RETURN_DELAYED, &delegation->flags) || + test_bit(NFS_DELEGATION_REVOKED, &delegation->flags)) { if (nfs4_is_valid_delegation(delegation, 0)) prev = delegation; continue; } + inode = nfs_delegation_grab_inode(delegation); if (inode == NULL) continue;