Commit 90e7b20f authored by Filipe Manana's avatar Filipe Manana Committed by Wentao Guan
Browse files

btrfs: avoid monopolizing a core when activating a swap file

stable inclusion
from stable-v6.6.78
commit 893b28374aba25f78a34befb184624eebb468ab6
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IBX1M5

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=893b28374aba25f78a34befb184624eebb468ab6



--------------------------------

commit 2c8507c63f5498d4ee4af404a8e44ceae4345056 upstream.

This commit re-attempts the backport of the change to the linux-6.6.y
branch. Commit 6e1a82259307 ("btrfs: avoid monopolizing a core when
activating a swap file") on this branch was reverted.

During swap activation we iterate over the extents of a file and we can
have many thousands of them, so we can end up in a busy loop monopolizing
a core. Avoid this by doing a voluntary reschedule after processing each
extent.

CC: stable@vger.kernel.org # 5.4+
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarKoichiro Den <koichiro.den@canonical.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 893b28374aba25f78a34befb184624eebb468ab6)
Signed-off-by: default avatarWentao Guan <guanwentao@uniontech.com>
parent de8b21d4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -10837,6 +10837,8 @@ static int btrfs_swap_activate(struct swap_info_struct *sis, struct file *file,
		}

		start += len;

		cond_resched();
	}

	if (bsi.block_len)