From 6a935c784a2b040701728a9c7cb6140190d0b022 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 19 Feb 2022 05:16:30 -0500 Subject: [PATCH] Update bcachefs sources to 7d0925084b bcachefs: opts.read_journal_only --- .bcachefs_revision | 2 +- libbcachefs/bcachefs.h | 2 -- libbcachefs/btree_key_cache.c | 8 -------- libbcachefs/btree_key_cache.h | 8 -------- libbcachefs/btree_types.h | 4 ---- libbcachefs/btree_update_leaf.c | 34 +++++++++++---------------------- libbcachefs/opts.h | 5 +++++ libbcachefs/recovery.c | 6 +++--- libbcachefs/super-io.c | 3 --- 9 files changed, 20 insertions(+), 52 deletions(-) diff --git a/.bcachefs_revision b/.bcachefs_revision index ca7bf7d..5165b9d 100644 --- a/.bcachefs_revision +++ b/.bcachefs_revision @@ -1 +1 @@ -da8056a215b89f229d33c89944d136190d71f2bc +7d0925084b6927ad8c631bde92fb1c41cc6270c2 diff --git a/libbcachefs/bcachefs.h b/libbcachefs/bcachefs.h index 0e9689f..b018425 100644 --- a/libbcachefs/bcachefs.h +++ b/libbcachefs/bcachefs.h @@ -507,8 +507,6 @@ struct bch_dev { enum { /* startup: */ - BCH_FS_INITIALIZED, - BCH_FS_ALLOC_READ_DONE, BCH_FS_ALLOC_CLEAN, BCH_FS_ALLOCATOR_RUNNING, BCH_FS_ALLOCATOR_STOPPING, diff --git a/libbcachefs/btree_key_cache.c b/libbcachefs/btree_key_cache.c index 928aab6..167d177 100644 --- a/libbcachefs/btree_key_cache.c +++ b/libbcachefs/btree_key_cache.c @@ -555,14 +555,6 @@ bool bch2_btree_insert_key_cached(struct btree_trans *trans, return true; } -#ifdef CONFIG_BCACHEFS_DEBUG -void bch2_btree_key_cache_verify_clean(struct btree_trans *trans, - enum btree_id id, struct bpos pos) -{ - BUG_ON(bch2_btree_key_cache_find(trans->c, id, pos)); -} -#endif - static unsigned long bch2_btree_key_cache_scan(struct shrinker *shrink, struct shrink_control *sc) { diff --git a/libbcachefs/btree_key_cache.h b/libbcachefs/btree_key_cache.h index b3d241b..fd29c14 100644 --- a/libbcachefs/btree_key_cache.h +++ b/libbcachefs/btree_key_cache.h @@ -32,14 +32,6 @@ bool bch2_btree_insert_key_cached(struct btree_trans *, struct btree_path *, struct bkey_i *); int bch2_btree_key_cache_flush(struct btree_trans *, enum btree_id, struct bpos); -#ifdef CONFIG_BCACHEFS_DEBUG -void bch2_btree_key_cache_verify_clean(struct btree_trans *, - enum btree_id, struct bpos); -#else -static inline void -bch2_btree_key_cache_verify_clean(struct btree_trans *trans, - enum btree_id id, struct bpos pos) {} -#endif void bch2_fs_btree_key_cache_exit(struct btree_key_cache *); void bch2_fs_btree_key_cache_init_early(struct btree_key_cache *); diff --git a/libbcachefs/btree_types.h b/libbcachefs/btree_types.h index 9ae5c8d..ae52ac9 100644 --- a/libbcachefs/btree_types.h +++ b/libbcachefs/btree_types.h @@ -352,11 +352,7 @@ struct btree_insert_entry { unsigned long ip_allocated; }; -#ifndef CONFIG_LOCKDEP #define BTREE_ITER_MAX 64 -#else -#define BTREE_ITER_MAX 32 -#endif struct btree_trans_commit_hook; typedef int (btree_trans_commit_hook_fn)(struct btree_trans *, struct btree_trans_commit_hook *); diff --git a/libbcachefs/btree_update_leaf.c b/libbcachefs/btree_update_leaf.c index 2e3818a..a08d36c 100644 --- a/libbcachefs/btree_update_leaf.c +++ b/libbcachefs/btree_update_leaf.c @@ -987,15 +987,9 @@ int __bch2_trans_commit(struct btree_trans *trans) if (trans->flags & BTREE_INSERT_GC_LOCK_HELD) lockdep_assert_held(&c->gc_lock); - memset(&trans->journal_preres, 0, sizeof(trans->journal_preres)); - - trans->journal_u64s = trans->extra_journal_entry_u64s; - trans->journal_preres_u64s = 0; - - trans->journal_transaction_names = READ_ONCE(c->opts.journal_transaction_names); - - if (trans->journal_transaction_names) - trans->journal_u64s += JSET_ENTRY_LOG_U64s; + ret = bch2_trans_commit_run_triggers(trans); + if (ret) + goto out_reset; if (!(trans->flags & BTREE_INSERT_NOCHECK_RW) && unlikely(!percpu_ref_tryget(&c->writes))) { @@ -1004,21 +998,15 @@ int __bch2_trans_commit(struct btree_trans *trans) goto out_reset; } -#ifdef CONFIG_BCACHEFS_DEBUG - /* - * if BTREE_TRIGGER_NORUN is set, it means we're probably being called - * from the key cache flush code: - */ - trans_for_each_update(trans, i) - if (!i->cached && - !(i->flags & BTREE_TRIGGER_NORUN)) - bch2_btree_key_cache_verify_clean(trans, - i->btree_id, i->k->k.p); -#endif + memset(&trans->journal_preres, 0, sizeof(trans->journal_preres)); - ret = bch2_trans_commit_run_triggers(trans); - if (ret) - goto out; + trans->journal_u64s = trans->extra_journal_entry_u64s; + trans->journal_preres_u64s = 0; + + trans->journal_transaction_names = READ_ONCE(c->opts.journal_transaction_names); + + if (trans->journal_transaction_names) + trans->journal_u64s += JSET_ENTRY_LOG_U64s; trans_for_each_update(trans, i) { BUG_ON(!i->path->should_be_locked); diff --git a/libbcachefs/opts.h b/libbcachefs/opts.h index affe923..bafacf6 100644 --- a/libbcachefs/opts.h +++ b/libbcachefs/opts.h @@ -329,6 +329,11 @@ enum opt_type { OPT_BOOL(), \ NO_SB_OPT, false, \ NULL, "Read all journal entries, not just dirty ones")\ + x(read_journal_only, u8, \ + 0, \ + OPT_BOOL(), \ + NO_SB_OPT, false, \ + NULL, "Only read the journal, skip the rest of recovery")\ x(journal_transaction_names, u8, \ OPT_FS|OPT_FORMAT|OPT_MOUNT|OPT_RUNTIME, \ OPT_BOOL(), \ diff --git a/libbcachefs/recovery.c b/libbcachefs/recovery.c index 543db58..96f13f2 100644 --- a/libbcachefs/recovery.c +++ b/libbcachefs/recovery.c @@ -1054,6 +1054,9 @@ use_clean: blacklist_seq = journal_seq = le64_to_cpu(clean->journal_seq) + 1; } + if (c->opts.read_journal_only) + goto out; + if (c->opts.reconstruct_alloc) { c->sb.compat &= ~(1ULL << BCH_COMPAT_alloc_info); drop_alloc_keys(&c->journal_keys); @@ -1111,8 +1114,6 @@ use_clean: goto err; bch_verbose(c, "stripes_read done"); - set_bit(BCH_FS_ALLOC_READ_DONE, &c->flags); - /* * If we're not running fsck, this ensures bch2_fsck_err() calls are * instead interpreted as bch2_inconsistent_err() calls: @@ -1297,7 +1298,6 @@ int bch2_fs_initialize(struct bch_fs *c) } mutex_unlock(&c->sb_lock); - set_bit(BCH_FS_ALLOC_READ_DONE, &c->flags); set_bit(BCH_FS_INITIAL_GC_DONE, &c->flags); set_bit(BCH_FS_FSCK_DONE, &c->flags); diff --git a/libbcachefs/super-io.c b/libbcachefs/super-io.c index 49dafda..eae6318 100644 --- a/libbcachefs/super-io.c +++ b/libbcachefs/super-io.c @@ -455,9 +455,6 @@ int bch2_sb_to_fs(struct bch_fs *c, struct bch_sb *src) __copy_super(&c->disk_sb, src); - if (BCH_SB_INITIALIZED(c->disk_sb.sb)) - set_bit(BCH_FS_INITIALIZED, &c->flags); - ret = bch2_sb_replicas_to_cpu_replicas(c); if (ret) return ret; -- 2.39.2