]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSv4: Add missing rescheduling points in nfs_client_return_marked_delegations
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 21 Aug 2024 18:05:00 +0000 (14:05 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:11:39 +0000 (11:11 +0200)
[ Upstream commit a017ad1313fc91bdf235097fd0a02f673fc7bb11 ]

We're seeing reports of soft lockups when iterating through the loops,
so let's add rescheduling points.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/super.c

index 0d6473cb00cb3e0fd2736e7aeccd95ad588c8642..f63513e477c50cddd049d9b587538196f3aa43ca 100644 (file)
@@ -47,6 +47,7 @@
 #include <linux/vfs.h>
 #include <linux/inet.h>
 #include <linux/in6.h>
+#include <linux/sched.h>
 #include <linux/slab.h>
 #include <net/ipv6.h>
 #include <linux/netdevice.h>
@@ -223,6 +224,7 @@ static int __nfs_list_for_each_server(struct list_head *head,
                ret = fn(server, data);
                if (ret)
                        goto out;
+               cond_resched();
                rcu_read_lock();
        }
        rcu_read_unlock();