summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2025-10-17 18:41:05 +0300
committerDavid Sterba <dsterba@suse.com>2025-11-25 00:04:30 +0300
commit063171a4f0fa25fe47331b4fee3f705484f1c690 (patch)
treee26fc5b88fafe112b5aa34ebf13d8a908627cd2b
parent988f693a46d83dc832005a1403ae0471eb1f8964 (diff)
downloadlinux-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.c12
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);