diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-12-09 14:40:55 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2022-12-09 15:30:56 -0500 |
commit | 49c7ee1e826d1fba1cf189d5aaaad5d02ce85cb9 (patch) | |
tree | af5cdb627a13cbbae4d732ca5c3a6d16bbb94edd | |
parent | 6804088e8782de9a354c6d458c35a4f110bc11c1 (diff) |
fixup! bcachefs: bucket_gens btree
-rw-r--r-- | fs/bcachefs/alloc_background.c | 14 | ||||
-rw-r--r-- | fs/bcachefs/recovery.c | 1 |
2 files changed, 12 insertions, 3 deletions
diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c index 474ef290f39f..0939200e6d1a 100644 --- a/fs/bcachefs/alloc_background.c +++ b/fs/bcachefs/alloc_background.c @@ -1255,7 +1255,15 @@ static int bch2_check_alloc_hole_bucket_gens(struct btree_trans *trans, } if (need_update) { - ret = bch2_trans_update(trans, bucket_gens_iter, &g.k_i, 0); + struct bkey_i *k = bch2_trans_kmalloc(trans, sizeof(g)); + + ret = PTR_ERR_OR_ZERO(k); + if (ret) + goto err; + + memcpy(k, &g, sizeof(g)); + + ret = bch2_trans_update(trans, bucket_gens_iter, k, 0); if (ret) goto err; } @@ -1381,7 +1389,7 @@ static int bch2_check_bucket_gens_key(struct btree_trans *trans, k = bch2_trans_kmalloc(trans, sizeof(g)); ret = PTR_ERR_OR_ZERO(k); if (ret) - return ret; + goto out; memcpy(k, &g, sizeof(g)); ret = bch2_trans_update(trans, iter, k, 0); @@ -1433,7 +1441,7 @@ int bch2_check_alloc_info(struct bch_fs *c) &freespace_iter, &bucket_gens_iter); if (ret) - break; + goto bkey_err; } else { next = k.k->p; diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index b190ab3e8682..069aafba48ac 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -922,6 +922,7 @@ static bool btree_id_is_alloc(enum btree_id id) case BTREE_ID_backpointers: case BTREE_ID_need_discard: case BTREE_ID_freespace: + case BTREE_ID_bucket_gens: return true; default: return false; |