diff options
author | Filipe Manana <fdmanana@suse.com> | 2023-07-26 16:57:06 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2023-08-21 14:52:18 +0200 |
commit | 7e3bfd146e3ed1e3125a1c5e53c12dee787b6b4b (patch) | |
tree | fbbbcb0562352a6d74723c29de1d5ebab5e0b8ec /fs/btrfs/space-info.c | |
parent | a7f8de500e28bb227e02a7bd35988cf37b816c86 (diff) |
btrfs: fail priority metadata ticket with real fs error
At priority_reclaim_metadata_space(), if we were not able to satisfy the
the ticket after going through the various flushing states and we notice
the fs went into an error state, likely due to a transaction abort during
the flushing, set the ticket's error to the error that caused the
transaction abort instead of an unconditional -EROFS.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/space-info.c')
-rw-r--r-- | fs/btrfs/space-info.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 5b1b71e029ad..be5ce209b918 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -1421,13 +1421,13 @@ static void priority_reclaim_metadata_space(struct btrfs_fs_info *fs_info, /* * Attempt to steal from the global rsv if we can, except if the fs was * turned into error mode due to a transaction abort when flushing space - * above, in that case fail with -EROFS instead of returning success to - * the caller if we can steal from the global rsv - this is just to have - * caller fail immeditelly instead of later when trying to modify the - * fs, making it easier to debug -ENOSPC problems. + * above, in that case fail with the abort error instead of returning + * success to the caller if we can steal from the global rsv - this is + * just to have caller fail immeditelly instead of later when trying to + * modify the fs, making it easier to debug -ENOSPC problems. */ if (BTRFS_FS_ERROR(fs_info)) { - ticket->error = -EROFS; + ticket->error = BTRFS_FS_ERROR(fs_info); remove_ticket(space_info, ticket); } else if (!steal_from_global_rsv(fs_info, space_info, ticket)) { ticket->error = -ENOSPC; |