summaryrefslogtreecommitdiff
path: root/libbcachefs/fsck.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-08-18 12:32:10 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-08-18 12:49:48 -0400
commitdded444b20dd3f47393937315b8217535ff3c51d (patch)
treec6f6b3973b5de757b458bb9e0f4c7d81e4fbef4d /libbcachefs/fsck.c
parent51ffcc699369deaa0fb4333a68bbbdf523afba11 (diff)
Update bcachefs sources to dfaf9a6ee2 lib/printbuf: Clean up headers
Diffstat (limited to 'libbcachefs/fsck.c')
-rw-r--r--libbcachefs/fsck.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/libbcachefs/fsck.c b/libbcachefs/fsck.c
index c93e177a..1a841146 100644
--- a/libbcachefs/fsck.c
+++ b/libbcachefs/fsck.c
@@ -290,7 +290,7 @@ err:
if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
goto retry;
- return ret;
+ return ret ?: -BCH_ERR_transaction_restart_nested;
}
static int __remove_dirent(struct btree_trans *trans, struct bpos pos)
@@ -914,7 +914,7 @@ static int check_inode(struct btree_trans *trans,
bch2_fs_lazy_rw(c);
ret = fsck_inode_rm(trans, u.bi_inum, iter->pos.snapshot);
- if (ret)
+ if (ret && !bch2_err_matches(ret, BCH_ERR_transaction_restart))
bch_err(c, "error in fsck: error while deleting inode: %s",
bch2_err_str(ret));
return ret;
@@ -1149,13 +1149,11 @@ static int check_i_sectors(struct btree_trans *trans, struct inode_walker *w)
}
}
fsck_err:
- if (ret) {
+ if (ret)
bch_err(c, "error from check_i_sectors(): %s", bch2_err_str(ret));
- return ret;
- }
- if (trans_was_restarted(trans, restart_count))
- return -BCH_ERR_transaction_restart_nested;
- return 0;
+ if (!ret && trans_was_restarted(trans, restart_count))
+ ret = -BCH_ERR_transaction_restart_nested;
+ return ret;
}
static int check_extent(struct btree_trans *trans, struct btree_iter *iter,