diff options
author | Filipe Manana <fdmanana@suse.com> | 2022-09-01 16:18:26 +0300 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2022-09-26 13:28:00 +0300 |
commit | 09fbc1c8e7b00e260b18049af71bf8ca8c4cba99 (patch) | |
tree | 409bbb15d7521a69af9d6ba6c587cbac66daa22e /fs/btrfs/extent_io.c | |
parent | 33a86cfa1741ef1668b0d312c7964b4f35e9d31e (diff) | |
download | linux-09fbc1c8e7b00e260b18049af71bf8ca8c4cba99.tar.xz |
btrfs: allow fiemap to be interruptible
Doing fiemap on a file with a very large number of extents can take a very
long time, and we have reports of it being too slow (two recent examples
in the Link tags below), so make it interruptible.
Link: https://lore.kernel.org/linux-btrfs/21dd32c6-f1f9-f44a-466a-e18fdc6788a7@virtuozzo.com/
Link: https://lore.kernel.org/linux-btrfs/Ysace25wh5BbLd5f@atmark-techno.com/
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 8f143c10d81b..28e49a4a9eb9 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -5623,6 +5623,11 @@ int extent_fiemap(struct btrfs_inode *inode, struct fiemap_extent_info *fieinfo, ret = 0; goto out_free; } + + if (fatal_signal_pending(current)) { + ret = -EINTR; + goto out_free; + } } out_free: if (!ret) |