Commit a12cb6f7 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Fix accidental O(n^2) in fiemap



Since bch2_seek_pagecache_data() searches for dirty data, we only want
to call it for holes in the extents btree - otherwise we have an
accidental O(n^2), as we repeatedly search the same range.

Reported-by: default avatarMarcin Mirosław <marcin@mejor.pl>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 43b9fece
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1429,7 +1429,9 @@ static int bch2_next_fiemap_extent(struct btree_trans *trans,
	if (ret)
		goto err;

	ret = bch2_next_fiemap_pagecache_extent(trans, inode, start, end, cur);
	u64 pagecache_end = k.k ? max(start, bkey_start_offset(k.k)) : end;

	ret = bch2_next_fiemap_pagecache_extent(trans, inode, start, pagecache_end, cur);
	if (ret)
		goto err;