diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f4a754d62bf450161a0a816e2604996e8ebd7f45..a13ab3abef1228f1687db673e080651a03bcb61c 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -11368,6 +11368,8 @@ static int btrfs_swap_activate(struct swap_info_struct *sis, struct file *file,
 		}
 
 		start += len;
+
+		cond_resched();
 	}
 
 	if (bsi.block_len)