mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 00:44:31 +01:00
btrfs: handle discard errors in in btrfs_finish_extent_commit()
Coverity (ID: 1226842) reported that the return value of btrfs_discard_extent() is assigned to ret but is immediately overwritten by unpin_extent_range() without being checked. Use the same error handling that is done later in the same function. Signed-off-by: Jingkai Tan <contact@jingk.ai> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
ecb7c2484c
commit
2970525f78
1 changed files with 7 additions and 1 deletions
|
|
@ -2933,9 +2933,15 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans)
|
|||
while (!TRANS_ABORTED(trans) && cached_state) {
|
||||
struct extent_state *next_state;
|
||||
|
||||
if (btrfs_test_opt(fs_info, DISCARD_SYNC))
|
||||
if (btrfs_test_opt(fs_info, DISCARD_SYNC)) {
|
||||
ret = btrfs_discard_extent(fs_info, start,
|
||||
end + 1 - start, NULL, true);
|
||||
if (ret) {
|
||||
btrfs_warn(fs_info,
|
||||
"discard failed for extent [%llu, %llu]: errno=%d %s",
|
||||
start, end, ret, btrfs_decode_error(ret));
|
||||
}
|
||||
}
|
||||
|
||||
next_state = btrfs_next_extent_state(unpin, cached_state);
|
||||
btrfs_clear_extent_dirty(unpin, start, end, &cached_state);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue