summaryrefslogtreecommitdiff
path: root/libbcachefs/journal_sb.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-03-14 12:56:38 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-03-14 12:56:38 -0400
commitfa358537725c8065b058b558125cf15359936f94 (patch)
treec9aa0d375aa87434c4139f59d4aa66281a6c6c17 /libbcachefs/journal_sb.c
parent46ba4fb48ca5ac28f442b74c44ca53196112423f (diff)
Update bcachefs sources to 72405e7ff8 bcachefs: Fix bch2_check_extents_to_backpointers()
Diffstat (limited to 'libbcachefs/journal_sb.c')
-rw-r--r--libbcachefs/journal_sb.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/libbcachefs/journal_sb.c b/libbcachefs/journal_sb.c
index 9b933330..5be78823 100644
--- a/libbcachefs/journal_sb.c
+++ b/libbcachefs/journal_sb.c
@@ -175,46 +175,45 @@ const struct bch_sb_field_ops bch_sb_field_ops_journal_v2 = {
.to_text = bch2_sb_journal_v2_to_text,
};
-int bch2_journal_buckets_to_sb(struct bch_fs *c, struct bch_dev *ca)
+int bch2_journal_buckets_to_sb(struct bch_fs *c, struct bch_dev *ca,
+ u64 *buckets, unsigned nr)
{
- struct journal_device *ja = &ca->journal;
struct bch_sb_field_journal_v2 *j;
- unsigned i, dst = 0, nr = 1;
+ unsigned i, dst = 0, nr_compacted = 1;
if (c)
lockdep_assert_held(&c->sb_lock);
- if (!ja->nr) {
+ if (!nr) {
bch2_sb_field_delete(&ca->disk_sb, BCH_SB_FIELD_journal);
bch2_sb_field_delete(&ca->disk_sb, BCH_SB_FIELD_journal_v2);
return 0;
}
- for (i = 0; i + 1 < ja->nr; i++)
- if (ja->buckets[i] + 1 != ja->buckets[i + 1])
- nr++;
+ for (i = 0; i + 1 < nr; i++)
+ if (buckets[i] + 1 != buckets[i + 1])
+ nr_compacted++;
j = bch2_sb_resize_journal_v2(&ca->disk_sb,
- (sizeof(*j) + sizeof(j->d[0]) * nr) / sizeof(u64));
+ (sizeof(*j) + sizeof(j->d[0]) * nr_compacted) / sizeof(u64));
if (!j)
return -BCH_ERR_ENOSPC_sb_journal;
bch2_sb_field_delete(&ca->disk_sb, BCH_SB_FIELD_journal);
- j->d[dst].start = le64_to_cpu(ja->buckets[0]);
+ j->d[dst].start = le64_to_cpu(buckets[0]);
j->d[dst].nr = le64_to_cpu(1);
- for (i = 1; i < ja->nr; i++) {
- if (ja->buckets[i] == ja->buckets[i - 1] + 1) {
+ for (i = 1; i < nr; i++) {
+ if (buckets[i] == buckets[i - 1] + 1) {
le64_add_cpu(&j->d[dst].nr, 1);
} else {
dst++;
- j->d[dst].start = le64_to_cpu(ja->buckets[i]);
+ j->d[dst].start = le64_to_cpu(buckets[i]);
j->d[dst].nr = le64_to_cpu(1);
}
}
- BUG_ON(dst + 1 != nr);
-
+ BUG_ON(dst + 1 != nr_compacted);
return 0;
}