[PATCH 2/2] btrfs: don't report failure when trim is interrupted
From: Luca Stefani via B4 Relay
Date: Wed Oct 28 2026 - 13:58:13 EST
From: Luca Stefani <luca.stefani.ge1@xxxxxxxxx>
Treat cancellation as a successful partial trim as ext4 and XFS do.
Reported-by: Zhiwei Liang <zhiwei.liang@xxxxxxxxx>
Closes: https://lore.kernel.org/20261028-btrfs-fitrim-freezer-v1-1-0ad1d58aa94d@xxxxxxxxx/
Suggested-by: Qu Wenruo <wqu@xxxxxxxx>
Signed-off-by: Luca Stefani <luca.stefani.ge1@xxxxxxxxx>
---
fs/btrfs/extent-tree.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 242db255cf1c..90e581c29609 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -6926,7 +6926,7 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range)
bg_failed, ERR_PTR(bg_ret));
if (ret == -ERESTARTSYS || ret == -EINTR)
- return ret;
+ goto out;
ret = btrfs_trim_free_extents(fs_info, &group_trimmed, &dev_failed, &dev_ret);
trimmed += group_trimmed;
@@ -6935,9 +6935,8 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range)
btrfs_warn(fs_info,
"failed to trim %llu device(s), first error %pe",
dev_failed, ERR_PTR(dev_ret));
+out:
range->len = trimmed;
- if (ret == -ERESTARTSYS || ret == -EINTR)
- return ret;
if (bg_ret)
return bg_ret;
return dev_ret;
--
2.56.0