diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
index 55ffcf44b909f0931ca206af3e09fa01bb93cfe7..7966acd5dc7fb7a4417e5badae9d4285d56ab246 100644
--- a/fs/btrfs/backref.c
+++ b/fs/btrfs/backref.c
@@ -1118,6 +1118,7 @@ int btrfs_find_all_roots(struct btrfs_trans_handle *trans,
 		if (!node)
 			break;
 		bytenr = node->val;
+		cond_resched();
 	}
 
 	ulist_free(tmp);