]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
NFSD: Replace idr_for_each_entry_ul in find_one_sb_stid()
authorChuck Lever <chuck.lever@oracle.com>
Sun, 19 Apr 2026 18:53:04 +0000 (14:53 -0400)
committerChuck Lever <cel@kernel.org>
Tue, 9 Jun 2026 20:32:59 +0000 (16:32 -0400)
Replace idr_for_each_entry_ul() with a while loop over
idr_get_next_ul() for consistency with find_one_export_stid(),
added in a subsequent commit.

No change in behavior.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Tested-by: Dai Ngo <dai.ngo@oracle.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4state.c

index 268aa1e5d19de268aacff31453c2ca6673af087c..d96994627ba83189645458f2e75da1056fc19894 100644 (file)
@@ -1746,17 +1746,19 @@ static struct nfs4_stid *find_one_sb_stid(struct nfs4_client *clp,
                                          struct super_block *sb,
                                          unsigned int sc_types)
 {
-       unsigned long id, tmp;
+       unsigned long id = 0;
        struct nfs4_stid *stid;
 
        spin_lock(&clp->cl_lock);
-       idr_for_each_entry_ul(&clp->cl_stateids, stid, tmp, id)
+       while ((stid = idr_get_next_ul(&clp->cl_stateids, &id)) != NULL) {
                if ((stid->sc_type & sc_types) &&
                    stid->sc_status == 0 &&
                    stid->sc_file->fi_inode->i_sb == sb) {
                        refcount_inc(&stid->sc_count);
                        break;
                }
+               id++;
+       }
        spin_unlock(&clp->cl_lock);
        return stid;
 }