mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-19 07:39:54 +02:00
btrfs: always update fstrim_range on failure in FITRIM ioctl
commit 3368597206
upstream.
Even in case of failure we could've discarded some data and userspace
should be made aware of it, so copy fstrim_range to userspace
regardless.
Also make sure to update the trimmed bytes amount even if
btrfs_trim_free_extents fails.
CC: stable@vger.kernel.org # 5.15+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Luca Stefani <luca.stefani.ge1@gmail.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6a6a5751c0
commit
4adf651494
|
@ -6175,13 +6175,13 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ret = btrfs_trim_free_extents(device, &group_trimmed);
|
ret = btrfs_trim_free_extents(device, &group_trimmed);
|
||||||
|
|
||||||
|
trimmed += group_trimmed;
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_failed++;
|
dev_failed++;
|
||||||
dev_ret = ret;
|
dev_ret = ret;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
trimmed += group_trimmed;
|
|
||||||
}
|
}
|
||||||
mutex_unlock(&fs_devices->device_list_mutex);
|
mutex_unlock(&fs_devices->device_list_mutex);
|
||||||
|
|
||||||
|
|
|
@ -533,13 +533,11 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info,
|
||||||
|
|
||||||
range.minlen = max(range.minlen, minlen);
|
range.minlen = max(range.minlen, minlen);
|
||||||
ret = btrfs_trim_fs(fs_info, &range);
|
ret = btrfs_trim_fs(fs_info, &range);
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
if (copy_to_user(arg, &range, sizeof(range)))
|
if (copy_to_user(arg, &range, sizeof(range)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __pure btrfs_is_empty_uuid(u8 *uuid)
|
int __pure btrfs_is_empty_uuid(u8 *uuid)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user