From 8cb32b9344f65dbdcb947745f812173d4bb65601 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Wed, 7 Jan 2026 08:27:01 +0100 Subject: [PATCH] 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 --- fs/nfs/delegation.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index 7b05d661775bb..bf1dcf186a478 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; -- 2.47.3