From: Filipe Manana Date: Thu, 1 Sep 2022 13:18:21 +0000 (+0100) Subject: btrfs: allow hole and data seeking to be interruptible X-Git-Tag: v6.1-rc5~25^2~132 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aed0ca180b45e145046b235cb61982a6292e756c;p=platform%2Fkernel%2Flinux-starfive.git 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: Josef Bacik Reviewed-by: Qu Wenruo Signed-off-by: Filipe Manana Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0a76ae8..96f444a 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -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);