summaryrefslogtreecommitdiff
path: root/libbcachefs/fsck.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/fsck.c')
-rw-r--r--libbcachefs/fsck.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/libbcachefs/fsck.c b/libbcachefs/fsck.c
index be7ba064..53ee1b0e 100644
--- a/libbcachefs/fsck.c
+++ b/libbcachefs/fsck.c
@@ -233,8 +233,9 @@ static int hash_check_duplicates(const struct bch_hash_desc desc,
if (fsck_err_on(k2.k->type == desc.key_type &&
!desc.cmp_bkey(k, k2), c,
"duplicate hash table keys:\n%s",
- (bch2_bkey_val_to_text(c, bkey_type(0, desc.btree_id),
- buf, sizeof(buf), k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ bkey_type(0, desc.btree_id),
+ k), buf))) {
ret = fsck_hash_delete_at(desc, &h->info, k_iter);
if (ret)
return ret;
@@ -297,8 +298,9 @@ static int hash_check_key(const struct bch_hash_desc desc,
"hashed to %llu chain starts at %llu\n%s",
desc.btree_id, k.k->p.offset,
hashed, h->chain->pos.offset,
- (bch2_bkey_val_to_text(c, bkey_type(0, desc.btree_id),
- buf, sizeof(buf), k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ bkey_type(0, desc.btree_id),
+ k), buf))) {
ret = hash_redo_key(desc, h, c, k_iter, k, hashed);
if (ret) {
bch_err(c, "hash_redo_key err %i", ret);
@@ -381,8 +383,9 @@ err_redo:
"hashed to %llu chain starts at %llu\n%s",
buf, strlen(buf), BTREE_ID_DIRENTS,
k->k->p.offset, hash, h->chain->pos.offset,
- (bch2_bkey_val_to_text(c, bkey_type(0, BTREE_ID_DIRENTS),
- buf, sizeof(buf), *k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ bkey_type(0, BTREE_ID_DIRENTS),
+ *k), buf))) {
ret = hash_redo_key(bch2_dirent_hash_desc,
h, c, iter, *k, hash);
if (ret)
@@ -524,13 +527,15 @@ static int check_dirents(struct bch_fs *c)
if (fsck_err_on(!w.have_inode, c,
"dirent in nonexisting directory:\n%s",
- (bch2_bkey_val_to_text(c, BTREE_ID_DIRENTS,
- buf, sizeof(buf), k), buf)) ||
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ BTREE_ID_DIRENTS,
+ k), buf)) ||
fsck_err_on(!S_ISDIR(w.inode.bi_mode), c,
"dirent in non directory inode type %u:\n%s",
mode_to_type(w.inode.bi_mode),
- (bch2_bkey_val_to_text(c, BTREE_ID_DIRENTS,
- buf, sizeof(buf), k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ BTREE_ID_DIRENTS,
+ k), buf))) {
ret = bch2_btree_delete_at(iter, 0);
if (ret)
goto err;
@@ -579,8 +584,9 @@ static int check_dirents(struct bch_fs *c)
if (fsck_err_on(d_inum == d.k->p.inode, c,
"dirent points to own directory:\n%s",
- (bch2_bkey_val_to_text(c, BTREE_ID_DIRENTS,
- buf, sizeof(buf), k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ BTREE_ID_DIRENTS,
+ k), buf))) {
ret = remove_dirent(c, iter, d);
if (ret)
goto err;
@@ -596,8 +602,9 @@ static int check_dirents(struct bch_fs *c)
if (fsck_err_on(!have_target, c,
"dirent points to missing inode:\n%s",
- (bch2_bkey_val_to_text(c, BTREE_ID_DIRENTS,
- buf, sizeof(buf), k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ BTREE_ID_DIRENTS,
+ k), buf))) {
ret = remove_dirent(c, iter, d);
if (ret)
goto err;
@@ -609,8 +616,9 @@ static int check_dirents(struct bch_fs *c)
mode_to_type(target.bi_mode), c,
"incorrect d_type: should be %u:\n%s",
mode_to_type(target.bi_mode),
- (bch2_bkey_val_to_text(c, BTREE_ID_DIRENTS,
- buf, sizeof(buf), k), buf))) {
+ (bch2_bkey_val_to_text(&PBUF(buf), c,
+ BTREE_ID_DIRENTS,
+ k), buf))) {
struct bkey_i_dirent *n;
n = kmalloc(bkey_bytes(d.k), GFP_KERNEL);