diff options
| author | Filipe Manana <fdmanana@suse.com> | 2025-10-17 18:41:05 +0300 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2025-11-25 00:04:30 +0300 |
| commit | 063171a4f0fa25fe47331b4fee3f705484f1c690 (patch) | |
| tree | e26fc5b88fafe112b5aa34ebf13d8a908627cd2b | |
| parent | 988f693a46d83dc832005a1403ae0471eb1f8964 (diff) | |
| download | linux-063171a4f0fa25fe47331b4fee3f705484f1c690.tar.xz | |
btrfs: return real error when failing tickets in maybe_fail_all_tickets()
In case we had a transaction abort we set a ticket's error to -EIO, but we
have the real error that caused the transaction to be aborted returned by
the macro BTRFS_FS_ERROR(). So use that real error instead of -EIO.
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
| -rw-r--r-- | fs/btrfs/space-info.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 69237f5d6078..8b1cf7f6c223 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -1082,7 +1082,7 @@ static bool maybe_fail_all_tickets(struct btrfs_space_info *space_info) struct btrfs_fs_info *fs_info = space_info->fs_info; struct reserve_ticket *ticket; u64 tickets_id = space_info->tickets_id; - const bool aborted = BTRFS_FS_ERROR(fs_info); + const int abort_error = BTRFS_FS_ERROR(fs_info); trace_btrfs_fail_all_tickets(fs_info, space_info); @@ -1096,16 +1096,16 @@ static bool maybe_fail_all_tickets(struct btrfs_space_info *space_info) ticket = list_first_entry(&space_info->tickets, struct reserve_ticket, list); - if (!aborted && steal_from_global_rsv(space_info, ticket)) + if (!abort_error && steal_from_global_rsv(space_info, ticket)) return true; - if (!aborted && btrfs_test_opt(fs_info, ENOSPC_DEBUG)) + if (!abort_error && btrfs_test_opt(fs_info, ENOSPC_DEBUG)) btrfs_info(fs_info, "failing ticket with %llu bytes", ticket->bytes); remove_ticket(space_info, ticket); - if (aborted) - ticket->error = -EIO; + if (abort_error) + ticket->error = abort_error; else ticket->error = -ENOSPC; wake_up(&ticket->wait); @@ -1116,7 +1116,7 @@ static bool maybe_fail_all_tickets(struct btrfs_space_info *space_info) * here to see if we can make progress with the next ticket in * the list. */ - if (!aborted) + if (!abort_error) btrfs_try_granting_tickets(space_info); } return (tickets_id != space_info->tickets_id); |
