From 8b23ea867a45ead0e97c95a72c8fee40058c5b95 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 9 Apr 2022 14:02:54 -0400 Subject: [PATCH] Update bcachefs sources to ac53c8857f fixup! bcachefs: Use a genradix for reading journal entries --- .bcachefs_revision | 2 +- libbcachefs/btree_update_leaf.c | 2 +- libbcachefs/ec.c | 5 ++++- libbcachefs/ec.h | 1 + libbcachefs/fs-io.c | 8 +------- libbcachefs/journal_io.c | 2 +- libbcachefs/super.c | 1 + 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.bcachefs_revision b/.bcachefs_revision index a7745cdf..d9504b5e 100644 --- a/.bcachefs_revision +++ b/.bcachefs_revision @@ -1 +1 @@ -6ddf061e68560a2bb263b126af7e894a6c1afb5f +ac53c8857f8bb192ed59c0b3fab853760d56918d diff --git a/libbcachefs/btree_update_leaf.c b/libbcachefs/btree_update_leaf.c index 36e14984..4fb07b4c 100644 --- a/libbcachefs/btree_update_leaf.c +++ b/libbcachefs/btree_update_leaf.c @@ -485,7 +485,7 @@ static int run_one_trans_trigger(struct btree_trans *trans, struct btree_insert_ } else if (overwrite && !i->overwrite_trigger_run) { i->overwrite_trigger_run = true; return bch2_trans_mark_old(trans, old, i->flags) ?: 1; - } else if (!i->insert_trigger_run) { + } else if (!overwrite && !i->insert_trigger_run) { i->insert_trigger_run = true; return bch2_trans_mark_new(trans, i->k, i->flags) ?: 1; } else { diff --git a/libbcachefs/ec.c b/libbcachefs/ec.c index a86b9748..dd0b3d7e 100644 --- a/libbcachefs/ec.c +++ b/libbcachefs/ec.c @@ -1682,11 +1682,14 @@ void bch2_fs_ec_exit(struct bch_fs *c) bioset_exit(&c->ec_bioset); } -int bch2_fs_ec_init(struct bch_fs *c) +void bch2_fs_ec_init_early(struct bch_fs *c) { INIT_WORK(&c->ec_stripe_create_work, ec_stripe_create_work); INIT_WORK(&c->ec_stripe_delete_work, ec_stripe_delete_work); +} +int bch2_fs_ec_init(struct bch_fs *c) +{ return bioset_init(&c->ec_bioset, 1, offsetof(struct ec_bio, bio), BIOSET_NEED_BVECS); } diff --git a/libbcachefs/ec.h b/libbcachefs/ec.h index af7f8eee..a4c13d61 100644 --- a/libbcachefs/ec.h +++ b/libbcachefs/ec.h @@ -224,6 +224,7 @@ void bch2_stripes_heap_to_text(struct printbuf *, struct bch_fs *); void bch2_new_stripes_to_text(struct printbuf *, struct bch_fs *); void bch2_fs_ec_exit(struct bch_fs *); +void bch2_fs_ec_init_early(struct bch_fs *); int bch2_fs_ec_init(struct bch_fs *); #endif /* _BCACHEFS_EC_H */ diff --git a/libbcachefs/fs-io.c b/libbcachefs/fs-io.c index 051372b8..05a02467 100644 --- a/libbcachefs/fs-io.c +++ b/libbcachefs/fs-io.c @@ -2909,13 +2909,7 @@ reassemble: next_pos = insert ? bkey_start_pos(&delete.k) : delete.k.p; - if (copy.k->k.size == k.k->size) { - /* - * If we're moving the entire extent, we can skip - * running triggers: - */ - trigger_flags |= BTREE_TRIGGER_NORUN; - } else { + if (copy.k->k.size != k.k->size) { /* We might end up splitting compressed extents: */ unsigned nr_ptrs = bch2_bkey_nr_ptrs_allocated(bkey_i_to_s_c(copy.k)); diff --git a/libbcachefs/journal_io.c b/libbcachefs/journal_io.c index eb20bf05..f9d13e6a 100644 --- a/libbcachefs/journal_io.c +++ b/libbcachefs/journal_io.c @@ -94,7 +94,7 @@ static int journal_entry_add(struct bch_fs *c, struct bch_dev *ca, } /* Drop entries we don't need anymore */ - if (!JSET_NO_FLUSH(j)) { + if (!JSET_NO_FLUSH(j) && !c->opts.read_entire_journal) { genradix_for_each(&c->journal_entries, iter, _i) { i = *_i; diff --git a/libbcachefs/super.c b/libbcachefs/super.c index e03c03ff..aba679c6 100644 --- a/libbcachefs/super.c +++ b/libbcachefs/super.c @@ -655,6 +655,7 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts) bch2_fs_allocator_foreground_init(c); bch2_fs_rebalance_init(c); bch2_fs_quota_init(c); + bch2_fs_ec_init_early(c); INIT_LIST_HEAD(&c->list);