diff options
| author | Filipe Manana <[email protected]> | 2025-05-21 16:30:56 +0000 |
|---|---|---|
| committer | David Sterba <[email protected]> | 2025-07-21 21:44:11 +0000 |
| commit | 8f1e1b263dbcd0f250116b9453001eb48fc31c74 (patch) | |
| tree | 93a77ca149667e8c824772615d70348cd33bfeb8 /fs/btrfs/tree-log.c | |
| parent | btrfs: make btrfs_should_periodic_reclaim() static (diff) | |
| download | kernel-8f1e1b263dbcd0f250116b9453001eb48fc31c74.tar.gz kernel-8f1e1b263dbcd0f250116b9453001eb48fc31c74.zip | |
btrfs: unfold transaction aborts when replaying log trees
We have a single line doing a transaction abort in case either we got an
error from btrfs_get_fs_root() different from -ENOENT or we got an error
from btrfs_pin_extent_for_log_replay(), making it hard to figure out which
function call failed when looking at a transaction abort massages and
stack trace in dmesg. Change this to have an explicit transaction abort
for each one of the two cases.
Reviewed-by: Qu Wenruo <[email protected]>
Signed-off-by: Filipe Manana <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Diffstat (limited to 'fs/btrfs/tree-log.c')
| -rw-r--r-- | fs/btrfs/tree-log.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index cea8a7e9d6d3..fea978ffadf6 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -7255,6 +7255,11 @@ again: true); if (IS_ERR(wc.replay_dest)) { ret = PTR_ERR(wc.replay_dest); + if (ret != -ENOENT) { + btrfs_put_root(log); + btrfs_abort_transaction(trans, ret); + goto error; + } /* * We didn't find the subvol, likely because it was @@ -7267,8 +7272,7 @@ again: * block from being modified, and we'll just bail for * each subsequent pass. */ - if (ret == -ENOENT) - ret = btrfs_pin_extent_for_log_replay(trans, log->node); + ret = btrfs_pin_extent_for_log_replay(trans, log->node); btrfs_put_root(log); if (!ret) |
