Commit aed0ca18 authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba
Browse files

btrfs: allow hole and data seeking to be interruptible

Doing hole or data seeking on a file with a very large number of extents
can take a long time, and we have reports of it being too slow (such as
at LSFMM from 2017, see the Link below). So make it interruptible.

Link: https://lwn.net/Articles/718805/


Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent bd64f622
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3652,6 +3652,10 @@ static loff_t find_desired_extent(struct btrfs_inode *inode, loff_t offset,
		start = em->start + em->len;
		free_extent_map(em);
		em = NULL;
		if (fatal_signal_pending(current)) {
			ret = -EINTR;
			break;
		}
		cond_resched();
	}
	free_extent_map(em);