All of lore.kernel.org
 help / color / mirror / Atom feed
* [koverstreet-bcachefs:bcachefs-rebalance_v2 738/799] fs/bcachefs/init/recovery.c:687 __bch2_fs_recovery() warn: variable dereferenced before check 'clean' (see line 619)
@ 2026-02-23  3:57 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-02-23  3:57 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Kent Overstreet <kent.overstreet@linux.dev>

tree:   https://github.com/koverstreet/bcachefs bcachefs-rebalance_v2
head:   d4b3d00447faf8d4d95db47e3902e4ca4db8fbdc
commit: 4f8305ce7dfa6f1c5aee499b7e0c6778f34f2750 [738/799] bcachefs: bch2_fs_recovery() -> try()
:::::: branch date: 4 months ago
:::::: commit date: 4 months ago
config: i386-randconfig-r072-20260223 (https://download.01.org/0day-ci/archive/20260223/202602231118.uHZLOP5d-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch version: v0.5.0-8994-gd50c5a4c

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202602231118.uHZLOP5d-lkp@intel.com/

smatch warnings:
fs/bcachefs/init/recovery.c:687 __bch2_fs_recovery() warn: variable dereferenced before check 'clean' (see line 619)

vim +/clean +687 fs/bcachefs/init/recovery.c

1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  609  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  610  static int __bch2_fs_recovery(struct bch_fs *c)
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  611  {
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  612  	struct bch_sb_field_clean *clean __free(kfree) = NULL;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  613  	struct journal_start_info journal_start = {};
4932e07ea04bcc fs/bcachefs/recovery.c      Kent Overstreet 2021-04-24  614  	int ret = 0;
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  615  
a37ad1a3aba957 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-05  616  	if (c->sb.clean) {
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  617  		clean = errptr_try(bch2_read_superblock_clean(c));
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  618  
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16 @619  		bch_info(c, "recovering from clean shutdown, journal seq %llu",
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  620  			 le64_to_cpu(clean->journal_seq));
8e7d3f6a43f5c9 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-02  621  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  622  		try(bch2_sb_journal_sort(c));
a37ad1a3aba957 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-05  623  	} else {
0a84a066f9a145 fs/bcachefs/recovery.c      Kent Overstreet 2021-11-15  624  		bch_info(c, "recovering from unclean shutdown");
a37ad1a3aba957 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-05  625  	}
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  626  
45150765d307c1 fs/bcachefs/recovery.c      Kent Overstreet 2024-04-26  627  	bch2_journal_pos_from_member_info_resume(c);
45150765d307c1 fs/bcachefs/recovery.c      Kent Overstreet 2024-04-26  628  
4dcd90b6d1b76b fs/bcachefs/recovery.c      Kent Overstreet 2024-03-30  629  	if (!c->sb.clean || c->opts.retain_recovery_info) {
ce6201c456571d fs/bcachefs/recovery.c      Kent Overstreet 2022-03-21  630  		struct genradix_iter iter;
ce6201c456571d fs/bcachefs/recovery.c      Kent Overstreet 2022-03-21  631  		struct journal_replay **i;
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  632  
365f64f36c55b7 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  633  		bch_verbose(c, "starting journal read");
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  634  		try(bch2_journal_read(c, &journal_start));
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  635  
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  636  		/*
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  637  		 * note: cmd_list_journal needs the blacklist table fully up to date so
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  638  		 * it can asterisk ignored journal entries:
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  639  		 */
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  640  		if (c->opts.read_journal_only)
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  641  			return 0;
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  642  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  643  		if (mustfix_fsck_err_on(c->sb.clean && !journal_start.clean,
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  644  					c, clean_but_journal_not_empty,
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  645  					"filesystem marked clean but journal not empty")) {
19dd3172b0002a fs/bcachefs/recovery.c      Kent Overstreet 2021-04-04  646  			c->sb.compat &= ~(1ULL << BCH_COMPAT_alloc_info);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  647  			SET_BCH_SB_CLEAN(c->disk_sb.sb, false);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  648  			c->sb.clean = false;
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  649  		}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  650  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  651  		struct jset *last_journal_entry = NULL;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  652  		genradix_for_each_reverse(&c->journal_entries, iter, i)
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  653  			if (!journal_replay_ignore(*i)) {
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  654  				last_journal_entry = &(*i)->j;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  655  				break;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  656  			}
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  657  
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  658  		if (!last_journal_entry) {
b65db750e2bb92 fs/bcachefs/recovery.c      Kent Overstreet 2023-10-24  659  			fsck_err_on(!c->sb.clean, c,
b65db750e2bb92 fs/bcachefs/recovery.c      Kent Overstreet 2023-10-24  660  				    dirty_but_no_journal_entries,
b65db750e2bb92 fs/bcachefs/recovery.c      Kent Overstreet 2023-10-24  661  				    "no journal entries found");
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  662  			if (clean)
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  663  				goto use_clean;
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  664  
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  665  			genradix_for_each_reverse(&c->journal_entries, iter, i)
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  666  				if (*i) {
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  667  					last_journal_entry = &(*i)->j;
2cce3752cec5a8 fs/bcachefs/recovery.c      Kent Overstreet 2024-02-25  668  					(*i)->ignore_blacklisted = false;
2cce3752cec5a8 fs/bcachefs/recovery.c      Kent Overstreet 2024-02-25  669  					(*i)->ignore_not_dirty= false;
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  670  					/*
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  671  					 * This was probably a NO_FLUSH entry,
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  672  					 * so last_seq was garbage - but we know
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  673  					 * we're only using a single journal
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  674  					 * entry, set it here:
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  675  					 */
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  676  					(*i)->j.last_seq = (*i)->j.seq;
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  677  					break;
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  678  				}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  679  		}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  680  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  681  		try(bch2_journal_keys_sort(c));
d07343561e263f fs/bcachefs/recovery.c      Kent Overstreet 2019-04-11  682  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  683  		if (c->sb.clean && last_journal_entry)
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  684  			try(bch2_verify_superblock_clean(c, &clean, last_journal_entry));
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  685  	} else {
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  686  use_clean:
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14 @687  		if (!clean) {
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  688  			bch_err(c, "no superblock clean section found");
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  689  			return bch_err_throw(c, fsck_repair_impossible);
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  690  
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  691  		}
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  692  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  693  		journal_start.start_seq = le64_to_cpu(clean->journal_seq) + 1;
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  694  	}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  695  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  696  	c->journal_replay_seq_start	= journal_start.seq_read_start;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  697  	c->journal_replay_seq_end	= journal_start.seq_read_end;
78328fec704e31 fs/bcachefs/recovery.c      Kent Overstreet 2023-07-08  698  
877da05ffb13c1 fs/bcachefs/recovery.c      Kent Overstreet 2021-07-30  699  	zero_out_btree_mem_ptr(&c->journal_keys);
877da05ffb13c1 fs/bcachefs/recovery.c      Kent Overstreet 2021-07-30  700  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  701  	try(journal_replay_early(c, clean));
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  702  
f0a5f22957fbf9 fs/bcachefs/recovery.c      Kent Overstreet 2025-07-14  703  	scoped_guard(rwsem_write, &c->state_lock)
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  704  		try(bch2_fs_resize_on_mount(c));
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  705  
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  706  	if (c->sb.features & BIT_ULL(BCH_FEATURE_small_image)) {
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  707  		bch_info(c, "filesystem is an unresized image file, mounting ro");
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  708  		c->opts.read_only = true;
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  709  	}
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  710  
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  711  	if (!c->opts.read_only &&
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  712  	    (c->sb.features & BIT_ULL(BCH_FEATURE_no_alloc_info))) {
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  713  		bch_info(c, "mounting a filesystem with no alloc info read-write; will recreate");
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  714  
00fa283a41fedc fs/bcachefs/recovery.c      Kent Overstreet 2024-12-10  715  		bch2_reconstruct_alloc(c);
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  716  	} else if (c->opts.reconstruct_alloc) {
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  717  		bch2_journal_log_msg(c, "dropping alloc info");
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  718  		bch_info(c, "dropping and reconstructing all alloc info");
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  719  
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  720  		bch2_reconstruct_alloc(c);
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  721  	}
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  722  
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  723  	if (c->sb.features & BIT_ULL(BCH_FEATURE_no_alloc_info)) {
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  724  		/* We can't go RW to fix errors without alloc info */
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  725  		if (c->opts.fix_errors == FSCK_FIX_yes ||
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  726  		    c->opts.fix_errors == FSCK_FIX_ask)
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  727  			c->opts.fix_errors = FSCK_FIX_no;
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  728  		if (c->opts.errors == BCH_ON_ERROR_fix_safe)
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  729  			c->opts.errors = BCH_ON_ERROR_continue;
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  730  	}
00fa283a41fedc fs/bcachefs/recovery.c      Kent Overstreet 2024-12-10  731  
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  732  	/*
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  733  	 * After an unclean shutdown, skip then next few journal sequence
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  734  	 * numbers as they may have been referenced by btree writes that
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  735  	 * happened before their corresponding journal writes - those btree
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  736  	 * writes need to be ignored, by skipping and blacklisting the next few
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  737  	 * journal sequence numbers:
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  738  	 */
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  739  	if (!c->sb.clean)
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  740  		journal_start.start_seq += JOURNAL_BUF_NR * 4;
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  741  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  742  	if (journal_start.seq_read_end &&
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  743  	    journal_start.seq_read_end + 1 != journal_start.start_seq) {
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  744  		u64 blacklist_seq = journal_start.seq_read_end + 1;
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  745  		try(bch2_journal_log_msg(c, "blacklisting entries %llu-%llu",
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  746  					 blacklist_seq, journal_start.start_seq));
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  747  		try(bch2_journal_seq_blacklist_add(c, blacklist_seq, journal_start.start_seq));
f707e3d8f41e77 fs/bcachefs/recovery.c      Kent Overstreet 2019-06-18  748  	}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  749  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  750  	try(bch2_journal_log_msg(c, "starting journal at entry %llu, replaying %llu-%llu",
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  751  				 journal_start.start_seq,
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  752  				 journal_start.seq_read_start,
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  753  				 journal_start.seq_read_end));
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  754  	try(bch2_fs_journal_start(&c->journal, journal_start));
42b72e0ba226fa fs/bcachefs/recovery.c      Kent Overstreet 2019-01-24  755  
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  756  	/*
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  757  	 * Skip past versions that might have possibly been used (as nonces),
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  758  	 * but hadn't had their pointers written:
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  759  	 */
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  760  	if (c->sb.encryption_type && !c->sb.clean)
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  761  		atomic64_add(1 << 16, &c->key_version);
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  762  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  763  	try(read_btree_roots(c));
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  764  
7773df19c35fab fs/bcachefs/recovery.c      Kent Overstreet 2024-04-25  765  	set_bit(BCH_FS_btree_running, &c->flags);
7773df19c35fab fs/bcachefs/recovery.c      Kent Overstreet 2024-04-25  766  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  767  	try(bch2_sb_set_upgrade_extra(c));
7773df19c35fab fs/bcachefs/recovery.c      Kent Overstreet 2024-04-25  768  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  769  	try(bch2_run_recovery_passes(c, 0));
14b393ee768e83 fs/bcachefs/recovery.c      Kent Overstreet 2021-03-16  770  
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  771  	/*
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  772  	 * Normally set by the appropriate recovery pass: when cleared, this
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  773  	 * indicates we're in early recovery and btree updates should be done by
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  774  	 * being applied to the journal replay keys. _Must_ be cleared before
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  775  	 * multithreaded use:
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  776  	 */
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  777  	set_bit(BCH_FS_may_go_rw, &c->flags);
367cad09664aaf fs/bcachefs/recovery.c      Kent Overstreet 2025-05-10  778  	clear_bit(BCH_FS_in_fsck, &c->flags);
d55ddf6e7a81e1 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-31  779  
6d12d7ace99ec7 fs/bcachefs/recovery.c      Kent Overstreet 2024-09-22  780  	/* in case we don't run journal replay, i.e. norecovery mode */
6d12d7ace99ec7 fs/bcachefs/recovery.c      Kent Overstreet 2024-09-22  781  	set_bit(BCH_FS_accounting_replay_done, &c->flags);
6d12d7ace99ec7 fs/bcachefs/recovery.c      Kent Overstreet 2024-09-22  782  
c1f618f4f7cc7b fs/bcachefs/recovery.c      Kent Overstreet 2024-11-29  783  	bch2_async_btree_node_rewrites_flush(c);
c1f618f4f7cc7b fs/bcachefs/recovery.c      Kent Overstreet 2024-11-29  784  
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  785  	/* fsync if we fixed errors */
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  786  	bool errors_fixed = test_bit(BCH_FS_errors_fixed, &c->flags) ||
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  787  		test_bit(BCH_FS_errors_fixed_silent, &c->flags);
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  788  
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  789  	if (errors_fixed) {
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  790  		bch2_journal_flush_all_pins(&c->journal);
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  791  		bch2_journal_meta(&c->journal);
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  792  	}
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  793  
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  794  	/* If we fixed errors, verify that fs is actually clean now: */
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  795  	if (IS_ENABLED(CONFIG_BCACHEFS_DEBUG) &&
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  796  	    errors_fixed &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  797  	    !test_bit(BCH_FS_errors_not_fixed, &c->flags) &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  798  	    !test_bit(BCH_FS_error, &c->flags)) {
30418de09e6bda fs/bcachefs/recovery.c      Kent Overstreet 2023-11-13  799  		bch2_flush_fsck_errs(c);
30418de09e6bda fs/bcachefs/recovery.c      Kent Overstreet 2023-11-13  800  
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  801  		bch_info(c, "Fixed errors, running fsck a second time to verify fs is clean");
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  802  		errors_fixed = test_bit(BCH_FS_errors_fixed, &c->flags);
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  803  		clear_bit(BCH_FS_errors_fixed, &c->flags);
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  804  		clear_bit(BCH_FS_errors_fixed_silent, &c->flags);
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  805  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  806  		try(bch2_run_recovery_passes(c, BCH_RECOVERY_PASS_check_alloc_info));
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  807  
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  808  		if (errors_fixed ||
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  809  		    test_bit(BCH_FS_errors_not_fixed, &c->flags)) {
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  810  			bch_err(c, "Second fsck run was not clean");
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  811  			set_bit(BCH_FS_errors_not_fixed, &c->flags);
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  812  		}
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  813  
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  814  		if (errors_fixed)
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  815  			set_bit(BCH_FS_errors_fixed, &c->flags);
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  816  	}
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  817  
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  818  	if (enabled_qtypes(c)) {
619f5bee86b558 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-17  819  		bch_verbose(c, "reading quotas");
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  820  		try(bch2_fs_quota_read(c));
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  821  		bch_verbose(c, "quotas done");
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  822  	}
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  823  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  824  	scoped_guard(mutex, &c->sb_lock) {
ab69169ea6ba22 fs/bcachefs/recovery.c      Kent Overstreet 2025-08-02  825  		struct bch_sb_field_ext *ext = bch2_sb_field_get(c->disk_sb.sb, ext);
ab69169ea6ba22 fs/bcachefs/recovery.c      Kent Overstreet 2025-08-02  826  		bool write_sb = false;
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  827  
f87bf892ea9848 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  828  		if (BCH_SB_VERSION_UPGRADE_COMPLETE(c->disk_sb.sb) != le16_to_cpu(c->disk_sb.sb->version)) {
f87bf892ea9848 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  829  			SET_BCH_SB_VERSION_UPGRADE_COMPLETE(c->disk_sb.sb, le16_to_cpu(c->disk_sb.sb->version));
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  830  			write_sb = true;
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  831  		}
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  832  
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  833  		if (!test_bit(BCH_FS_error, &c->flags) &&
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  834  		    !(c->disk_sb.sb->compat[0] & cpu_to_le64(1ULL << BCH_COMPAT_alloc_info))) {
c0ebe3e48c75ab fs/bcachefs/recovery.c      Kent Overstreet 2021-05-23  835  			c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_alloc_info);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  836  			write_sb = true;
26609b619fa230 fs/bcachefs/recovery.c      Kent Overstreet 2018-11-01  837  		}
26609b619fa230 fs/bcachefs/recovery.c      Kent Overstreet 2018-11-01  838  
0a34c058fca84b fs/bcachefs/recovery.c      Kent Overstreet 2024-03-30  839  		if (!test_bit(BCH_FS_error, &c->flags) &&
27fcec6c27caec fs/bcachefs/recovery.c      Kent Overstreet 2024-03-30  840  		    !bch2_is_zero(ext->errors_silent, sizeof(ext->errors_silent))) {
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  841  			memset(ext->errors_silent, 0, sizeof(ext->errors_silent));
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  842  			write_sb = true;
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  843  		}
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  844  
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  845  		if (c->opts.fsck &&
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  846  		    !test_bit(BCH_FS_error, &c->flags) &&
68708efcac7119 fs/bcachefs/recovery.c      Kent Overstreet 2025-05-10  847  		    c->recovery.pass_done == BCH_RECOVERY_PASS_NR - 1 &&
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  848  		    ext->btrees_lost_data) {
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  849  			ext->btrees_lost_data = 0;
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  850  			write_sb = true;
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  851  		}
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  852  
0bc166ff564f9e fs/bcachefs/recovery.c      Kent Overstreet 2019-03-28  853  		if (c->opts.fsck &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  854  		    !test_bit(BCH_FS_error, &c->flags) &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  855  		    !test_bit(BCH_FS_errors_not_fixed, &c->flags)) {
0bc166ff564f9e fs/bcachefs/recovery.c      Kent Overstreet 2019-03-28  856  			SET_BCH_SB_HAS_ERRORS(c->disk_sb.sb, 0);
aae15aafcd43ec fs/bcachefs/recovery.c      Kent Overstreet 2021-04-24  857  			SET_BCH_SB_HAS_TOPOLOGY_ERRORS(c->disk_sb.sb, 0);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  858  			write_sb = true;
0bc166ff564f9e fs/bcachefs/recovery.c      Kent Overstreet 2019-03-28  859  		}
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  860  
f04158290d8bdd fs/bcachefs/recovery.c      Kent Overstreet 2024-04-20  861  		if (bch2_blacklist_entries_gc(c))
f04158290d8bdd fs/bcachefs/recovery.c      Kent Overstreet 2024-04-20  862  			write_sb = true;
f04158290d8bdd fs/bcachefs/recovery.c      Kent Overstreet 2024-04-20  863  
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  864  		if (!(c->sb.compat & BIT_ULL(BCH_COMPAT_no_stale_ptrs)) &&
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  865  		    (c->recovery.passes_complete & BIT_ULL(BCH_RECOVERY_PASS_check_extents)) &&
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  866  		    (c->recovery.passes_complete & BIT_ULL(BCH_RECOVERY_PASS_check_indirect_extents))) {
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  867  			c->disk_sb.sb->compat[0] |= cpu_to_le64(BIT_ULL(BCH_COMPAT_no_stale_ptrs));
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  868  			write_sb = true;
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  869  		}
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  870  
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  871  		if (write_sb)
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  872  			bch2_write_super(c);
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  873  	}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  874  
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  875  	if (!(c->sb.compat & (1ULL << BCH_COMPAT_extents_above_btree_updates_done)) ||
73bd774d28d2b2 fs/bcachefs/recovery.c      Kent Overstreet 2023-07-06  876  	    c->sb.version_min < bcachefs_metadata_version_btree_ptr_sectors_written) {
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  877  		struct bch_move_stats stats;
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  878  
b2d1d56b1d34bc fs/bcachefs/recovery.c      Kent Overstreet 2022-11-13  879  		bch2_move_stats_init(&stats, "recovery");
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  880  
f0a5f22957fbf9 fs/bcachefs/recovery.c      Kent Overstreet 2025-07-14  881  		CLASS(printbuf, buf)();
fbf9270817249b fs/bcachefs/recovery.c      Kent Overstreet 2023-11-16  882  		bch2_version_to_text(&buf, c->sb.version_min);
fbf9270817249b fs/bcachefs/recovery.c      Kent Overstreet 2023-11-16  883  		bch_info(c, "scanning for old btree nodes: min_version %s", buf.buf);
fbf9270817249b fs/bcachefs/recovery.c      Kent Overstreet 2023-11-16  884  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  885  		try(bch2_fs_read_write_early(c));
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  886  		try(bch2_scan_old_btree_nodes(c, &stats));
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  887  		bch_info(c, "scanning for old btree nodes done");
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  888  	}
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  889  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  890  	if (test_bit(BCH_FS_need_delete_dead_snapshots, &c->flags) &&
62719cf33c3ad6 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-23  891  	    !c->opts.nochanges) {
4ab35c34d5ab25 fs/bcachefs/recovery.c      Kent Overstreet 2022-07-14  892  		bch2_fs_read_write_early(c);
4ab35c34d5ab25 fs/bcachefs/recovery.c      Kent Overstreet 2022-07-14  893  		bch2_delete_dead_snapshots_async(c);
4ab35c34d5ab25 fs/bcachefs/recovery.c      Kent Overstreet 2022-07-14  894  	}
4932e07ea04bcc fs/bcachefs/recovery.c      Kent Overstreet 2021-04-24  895  fsck_err:
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  896  	return ret;
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  897  }
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  898  

:::::: The code at line 687 was first introduced by commit
:::::: adbcada43fa79197224b5a522b1faaf222b43bcd bcachefs: Don't require flush/fua on every journal write

:::::: TO: Kent Overstreet <kent.overstreet@gmail.com>
:::::: CC: Kent Overstreet <kent.overstreet@linux.dev>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [koverstreet-bcachefs:bcachefs-rebalance_v2 738/799] fs/bcachefs/init/recovery.c:687 __bch2_fs_recovery() warn: variable dereferenced before check 'clean' (see line 619)
@ 2026-06-29 16:43 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-06-29 16:43 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Kent Overstreet <kent.overstreet@linux.dev>

tree:   https://github.com/koverstreet/bcachefs bcachefs-rebalance_v2
head:   d4b3d00447faf8d4d95db47e3902e4ca4db8fbdc
commit: 4f8305ce7dfa6f1c5aee499b7e0c6778f34f2750 [738/799] bcachefs: bch2_fs_recovery() -> try()
:::::: branch date: 8 months ago
:::::: commit date: 8 months ago
config: x86_64-randconfig-161-20260629 (https://download.01.org/0day-ci/archive/20260630/202606300048.EMs8sMXe-lkp@intel.com/config)
compiler: gcc-13 (Debian 13.3.0-16) 13.3.0
smatch: v0.5.0-9185-gbcc58b9c

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202606300048.EMs8sMXe-lkp@intel.com/

smatch warnings:
fs/bcachefs/init/recovery.c:687 __bch2_fs_recovery() warn: variable dereferenced before check 'clean' (see line 619)

vim +/clean +687 fs/bcachefs/init/recovery.c

1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  609  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  610  static int __bch2_fs_recovery(struct bch_fs *c)
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  611  {
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  612  	struct bch_sb_field_clean *clean __free(kfree) = NULL;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  613  	struct journal_start_info journal_start = {};
4932e07ea04bcc fs/bcachefs/recovery.c      Kent Overstreet 2021-04-24  614  	int ret = 0;
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  615  
a37ad1a3aba957 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-05  616  	if (c->sb.clean) {
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  617  		clean = errptr_try(bch2_read_superblock_clean(c));
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  618  
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16 @619  		bch_info(c, "recovering from clean shutdown, journal seq %llu",
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  620  			 le64_to_cpu(clean->journal_seq));
8e7d3f6a43f5c9 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-02  621  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  622  		try(bch2_sb_journal_sort(c));
a37ad1a3aba957 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-05  623  	} else {
0a84a066f9a145 fs/bcachefs/recovery.c      Kent Overstreet 2021-11-15  624  		bch_info(c, "recovering from unclean shutdown");
a37ad1a3aba957 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-05  625  	}
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  626  
45150765d307c1 fs/bcachefs/recovery.c      Kent Overstreet 2024-04-26  627  	bch2_journal_pos_from_member_info_resume(c);
45150765d307c1 fs/bcachefs/recovery.c      Kent Overstreet 2024-04-26  628  
4dcd90b6d1b76b fs/bcachefs/recovery.c      Kent Overstreet 2024-03-30  629  	if (!c->sb.clean || c->opts.retain_recovery_info) {
ce6201c456571d fs/bcachefs/recovery.c      Kent Overstreet 2022-03-21  630  		struct genradix_iter iter;
ce6201c456571d fs/bcachefs/recovery.c      Kent Overstreet 2022-03-21  631  		struct journal_replay **i;
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  632  
365f64f36c55b7 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  633  		bch_verbose(c, "starting journal read");
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  634  		try(bch2_journal_read(c, &journal_start));
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  635  
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  636  		/*
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  637  		 * note: cmd_list_journal needs the blacklist table fully up to date so
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  638  		 * it can asterisk ignored journal entries:
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  639  		 */
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  640  		if (c->opts.read_journal_only)
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  641  			return 0;
e0de429a3ab5f9 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-01  642  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  643  		if (mustfix_fsck_err_on(c->sb.clean && !journal_start.clean,
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  644  					c, clean_but_journal_not_empty,
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  645  					"filesystem marked clean but journal not empty")) {
19dd3172b0002a fs/bcachefs/recovery.c      Kent Overstreet 2021-04-04  646  			c->sb.compat &= ~(1ULL << BCH_COMPAT_alloc_info);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  647  			SET_BCH_SB_CLEAN(c->disk_sb.sb, false);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  648  			c->sb.clean = false;
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  649  		}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  650  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  651  		struct jset *last_journal_entry = NULL;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  652  		genradix_for_each_reverse(&c->journal_entries, iter, i)
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  653  			if (!journal_replay_ignore(*i)) {
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  654  				last_journal_entry = &(*i)->j;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  655  				break;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  656  			}
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  657  
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  658  		if (!last_journal_entry) {
b65db750e2bb92 fs/bcachefs/recovery.c      Kent Overstreet 2023-10-24  659  			fsck_err_on(!c->sb.clean, c,
b65db750e2bb92 fs/bcachefs/recovery.c      Kent Overstreet 2023-10-24  660  				    dirty_but_no_journal_entries,
b65db750e2bb92 fs/bcachefs/recovery.c      Kent Overstreet 2023-10-24  661  				    "no journal entries found");
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  662  			if (clean)
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  663  				goto use_clean;
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  664  
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  665  			genradix_for_each_reverse(&c->journal_entries, iter, i)
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  666  				if (*i) {
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  667  					last_journal_entry = &(*i)->j;
2cce3752cec5a8 fs/bcachefs/recovery.c      Kent Overstreet 2024-02-25  668  					(*i)->ignore_blacklisted = false;
2cce3752cec5a8 fs/bcachefs/recovery.c      Kent Overstreet 2024-02-25  669  					(*i)->ignore_not_dirty= false;
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  670  					/*
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  671  					 * This was probably a NO_FLUSH entry,
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  672  					 * so last_seq was garbage - but we know
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  673  					 * we're only using a single journal
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  674  					 * entry, set it here:
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  675  					 */
5a53f851e6fe0e fs/bcachefs/recovery.c      Kent Overstreet 2023-11-03  676  					(*i)->j.last_seq = (*i)->j.seq;
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  677  					break;
1ba8a796b427d3 fs/bcachefs/recovery.c      Kent Overstreet 2022-12-14  678  				}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  679  		}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  680  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  681  		try(bch2_journal_keys_sort(c));
d07343561e263f fs/bcachefs/recovery.c      Kent Overstreet 2019-04-11  682  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  683  		if (c->sb.clean && last_journal_entry)
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  684  			try(bch2_verify_superblock_clean(c, &clean, last_journal_entry));
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  685  	} else {
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  686  use_clean:
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14 @687  		if (!clean) {
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  688  			bch_err(c, "no superblock clean section found");
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  689  			return bch_err_throw(c, fsck_repair_impossible);
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  690  
adbcada43fa791 fs/bcachefs/recovery.c      Kent Overstreet 2020-11-14  691  		}
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  692  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  693  		journal_start.start_seq = le64_to_cpu(clean->journal_seq) + 1;
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  694  	}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  695  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  696  	c->journal_replay_seq_start	= journal_start.seq_read_start;
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  697  	c->journal_replay_seq_end	= journal_start.seq_read_end;
78328fec704e31 fs/bcachefs/recovery.c      Kent Overstreet 2023-07-08  698  
877da05ffb13c1 fs/bcachefs/recovery.c      Kent Overstreet 2021-07-30  699  	zero_out_btree_mem_ptr(&c->journal_keys);
877da05ffb13c1 fs/bcachefs/recovery.c      Kent Overstreet 2021-07-30  700  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  701  	try(journal_replay_early(c, clean));
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  702  
f0a5f22957fbf9 fs/bcachefs/recovery.c      Kent Overstreet 2025-07-14  703  	scoped_guard(rwsem_write, &c->state_lock)
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  704  		try(bch2_fs_resize_on_mount(c));
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  705  
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  706  	if (c->sb.features & BIT_ULL(BCH_FEATURE_small_image)) {
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  707  		bch_info(c, "filesystem is an unresized image file, mounting ro");
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  708  		c->opts.read_only = true;
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  709  	}
0ca375b1779f22 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-15  710  
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  711  	if (!c->opts.read_only &&
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  712  	    (c->sb.features & BIT_ULL(BCH_FEATURE_no_alloc_info))) {
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  713  		bch_info(c, "mounting a filesystem with no alloc info read-write; will recreate");
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  714  
00fa283a41fedc fs/bcachefs/recovery.c      Kent Overstreet 2024-12-10  715  		bch2_reconstruct_alloc(c);
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  716  	} else if (c->opts.reconstruct_alloc) {
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  717  		bch2_journal_log_msg(c, "dropping alloc info");
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  718  		bch_info(c, "dropping and reconstructing all alloc info");
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  719  
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  720  		bch2_reconstruct_alloc(c);
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  721  	}
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  722  
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  723  	if (c->sb.features & BIT_ULL(BCH_FEATURE_no_alloc_info)) {
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  724  		/* We can't go RW to fix errors without alloc info */
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  725  		if (c->opts.fix_errors == FSCK_FIX_yes ||
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  726  		    c->opts.fix_errors == FSCK_FIX_ask)
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  727  			c->opts.fix_errors = FSCK_FIX_no;
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  728  		if (c->opts.errors == BCH_ON_ERROR_fix_safe)
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  729  			c->opts.errors = BCH_ON_ERROR_continue;
203852d9db68e1 fs/bcachefs/recovery.c      Kent Overstreet 2025-04-03  730  	}
00fa283a41fedc fs/bcachefs/recovery.c      Kent Overstreet 2024-12-10  731  
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  732  	/*
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  733  	 * After an unclean shutdown, skip then next few journal sequence
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  734  	 * numbers as they may have been referenced by btree writes that
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  735  	 * happened before their corresponding journal writes - those btree
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  736  	 * writes need to be ignored, by skipping and blacklisting the next few
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  737  	 * journal sequence numbers:
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  738  	 */
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  739  	if (!c->sb.clean)
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  740  		journal_start.start_seq += JOURNAL_BUF_NR * 4;
9b6e2f1e7036d6 fs/bcachefs/recovery.c      Kent Overstreet 2022-01-04  741  
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  742  	if (journal_start.seq_read_end &&
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  743  	    journal_start.seq_read_end + 1 != journal_start.start_seq) {
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  744  		u64 blacklist_seq = journal_start.seq_read_end + 1;
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  745  		try(bch2_journal_log_msg(c, "blacklisting entries %llu-%llu",
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  746  					 blacklist_seq, journal_start.start_seq));
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  747  		try(bch2_journal_seq_blacklist_add(c, blacklist_seq, journal_start.start_seq));
f707e3d8f41e77 fs/bcachefs/recovery.c      Kent Overstreet 2019-06-18  748  	}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  749  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  750  	try(bch2_journal_log_msg(c, "starting journal at entry %llu, replaying %llu-%llu",
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  751  				 journal_start.start_seq,
8548df42b64298 fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  752  				 journal_start.seq_read_start,
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  753  				 journal_start.seq_read_end));
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  754  	try(bch2_fs_journal_start(&c->journal, journal_start));
42b72e0ba226fa fs/bcachefs/recovery.c      Kent Overstreet 2019-01-24  755  
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  756  	/*
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  757  	 * Skip past versions that might have possibly been used (as nonces),
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  758  	 * but hadn't had their pointers written:
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  759  	 */
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  760  	if (c->sb.encryption_type && !c->sb.clean)
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  761  		atomic64_add(1 << 16, &c->key_version);
1cab5a82cc67a0 fs/bcachefs/recovery.c      Kent Overstreet 2022-04-21  762  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  763  	try(read_btree_roots(c));
1c6fdbd8f2465d fs/bcachefs/recovery.c      Kent Overstreet 2017-03-16  764  
7773df19c35fab fs/bcachefs/recovery.c      Kent Overstreet 2024-04-25  765  	set_bit(BCH_FS_btree_running, &c->flags);
7773df19c35fab fs/bcachefs/recovery.c      Kent Overstreet 2024-04-25  766  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  767  	try(bch2_sb_set_upgrade_extra(c));
7773df19c35fab fs/bcachefs/recovery.c      Kent Overstreet 2024-04-25  768  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  769  	try(bch2_run_recovery_passes(c, 0));
14b393ee768e83 fs/bcachefs/recovery.c      Kent Overstreet 2021-03-16  770  
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  771  	/*
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  772  	 * Normally set by the appropriate recovery pass: when cleared, this
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  773  	 * indicates we're in early recovery and btree updates should be done by
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  774  	 * being applied to the journal replay keys. _Must_ be cleared before
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  775  	 * multithreaded use:
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  776  	 */
ef4f6c322bf4ca fs/bcachefs/recovery.c      Kent Overstreet 2024-10-31  777  	set_bit(BCH_FS_may_go_rw, &c->flags);
367cad09664aaf fs/bcachefs/recovery.c      Kent Overstreet 2025-05-10  778  	clear_bit(BCH_FS_in_fsck, &c->flags);
d55ddf6e7a81e1 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-31  779  
6d12d7ace99ec7 fs/bcachefs/recovery.c      Kent Overstreet 2024-09-22  780  	/* in case we don't run journal replay, i.e. norecovery mode */
6d12d7ace99ec7 fs/bcachefs/recovery.c      Kent Overstreet 2024-09-22  781  	set_bit(BCH_FS_accounting_replay_done, &c->flags);
6d12d7ace99ec7 fs/bcachefs/recovery.c      Kent Overstreet 2024-09-22  782  
c1f618f4f7cc7b fs/bcachefs/recovery.c      Kent Overstreet 2024-11-29  783  	bch2_async_btree_node_rewrites_flush(c);
c1f618f4f7cc7b fs/bcachefs/recovery.c      Kent Overstreet 2024-11-29  784  
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  785  	/* fsync if we fixed errors */
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  786  	bool errors_fixed = test_bit(BCH_FS_errors_fixed, &c->flags) ||
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  787  		test_bit(BCH_FS_errors_fixed_silent, &c->flags);
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  788  
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  789  	if (errors_fixed) {
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  790  		bch2_journal_flush_all_pins(&c->journal);
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  791  		bch2_journal_meta(&c->journal);
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  792  	}
4fe0eeeae47732 fs/bcachefs/recovery.c      Kent Overstreet 2024-03-28  793  
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  794  	/* If we fixed errors, verify that fs is actually clean now: */
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  795  	if (IS_ENABLED(CONFIG_BCACHEFS_DEBUG) &&
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  796  	    errors_fixed &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  797  	    !test_bit(BCH_FS_errors_not_fixed, &c->flags) &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  798  	    !test_bit(BCH_FS_error, &c->flags)) {
30418de09e6bda fs/bcachefs/recovery.c      Kent Overstreet 2023-11-13  799  		bch2_flush_fsck_errs(c);
30418de09e6bda fs/bcachefs/recovery.c      Kent Overstreet 2023-11-13  800  
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  801  		bch_info(c, "Fixed errors, running fsck a second time to verify fs is clean");
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  802  		errors_fixed = test_bit(BCH_FS_errors_fixed, &c->flags);
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  803  		clear_bit(BCH_FS_errors_fixed, &c->flags);
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  804  		clear_bit(BCH_FS_errors_fixed_silent, &c->flags);
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  805  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  806  		try(bch2_run_recovery_passes(c, BCH_RECOVERY_PASS_check_alloc_info));
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  807  
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  808  		if (errors_fixed ||
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  809  		    test_bit(BCH_FS_errors_not_fixed, &c->flags)) {
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  810  			bch_err(c, "Second fsck run was not clean");
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  811  			set_bit(BCH_FS_errors_not_fixed, &c->flags);
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  812  		}
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  813  
a34bc56df7c8a5 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-05  814  		if (errors_fixed)
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  815  			set_bit(BCH_FS_errors_fixed, &c->flags);
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  816  	}
b56b787c7d5e83 fs/bcachefs/recovery.c      Kent Overstreet 2023-08-02  817  
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  818  	if (enabled_qtypes(c)) {
619f5bee86b558 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-17  819  		bch_verbose(c, "reading quotas");
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  820  		try(bch2_fs_quota_read(c));
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  821  		bch_verbose(c, "quotas done");
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  822  	}
7b512638e03a1d fs/bcachefs/recovery.c      Kent Overstreet 2019-03-29  823  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  824  	scoped_guard(mutex, &c->sb_lock) {
ab69169ea6ba22 fs/bcachefs/recovery.c      Kent Overstreet 2025-08-02  825  		struct bch_sb_field_ext *ext = bch2_sb_field_get(c->disk_sb.sb, ext);
ab69169ea6ba22 fs/bcachefs/recovery.c      Kent Overstreet 2025-08-02  826  		bool write_sb = false;
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  827  
f87bf892ea9848 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  828  		if (BCH_SB_VERSION_UPGRADE_COMPLETE(c->disk_sb.sb) != le16_to_cpu(c->disk_sb.sb->version)) {
f87bf892ea9848 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  829  			SET_BCH_SB_VERSION_UPGRADE_COMPLETE(c->disk_sb.sb, le16_to_cpu(c->disk_sb.sb->version));
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  830  			write_sb = true;
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  831  		}
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  832  
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  833  		if (!test_bit(BCH_FS_error, &c->flags) &&
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  834  		    !(c->disk_sb.sb->compat[0] & cpu_to_le64(1ULL << BCH_COMPAT_alloc_info))) {
c0ebe3e48c75ab fs/bcachefs/recovery.c      Kent Overstreet 2021-05-23  835  			c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_alloc_info);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  836  			write_sb = true;
26609b619fa230 fs/bcachefs/recovery.c      Kent Overstreet 2018-11-01  837  		}
26609b619fa230 fs/bcachefs/recovery.c      Kent Overstreet 2018-11-01  838  
0a34c058fca84b fs/bcachefs/recovery.c      Kent Overstreet 2024-03-30  839  		if (!test_bit(BCH_FS_error, &c->flags) &&
27fcec6c27caec fs/bcachefs/recovery.c      Kent Overstreet 2024-03-30  840  		    !bch2_is_zero(ext->errors_silent, sizeof(ext->errors_silent))) {
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  841  			memset(ext->errors_silent, 0, sizeof(ext->errors_silent));
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  842  			write_sb = true;
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  843  		}
8b16413cda7c46 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-29  844  
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  845  		if (c->opts.fsck &&
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  846  		    !test_bit(BCH_FS_error, &c->flags) &&
68708efcac7119 fs/bcachefs/recovery.c      Kent Overstreet 2025-05-10  847  		    c->recovery.pass_done == BCH_RECOVERY_PASS_NR - 1 &&
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  848  		    ext->btrees_lost_data) {
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  849  			ext->btrees_lost_data = 0;
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  850  			write_sb = true;
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  851  		}
55936afe11077a fs/bcachefs/recovery.c      Kent Overstreet 2024-03-15  852  
0bc166ff564f9e fs/bcachefs/recovery.c      Kent Overstreet 2019-03-28  853  		if (c->opts.fsck &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  854  		    !test_bit(BCH_FS_error, &c->flags) &&
3c471b65889aa2 fs/bcachefs/recovery.c      Kent Overstreet 2023-11-26  855  		    !test_bit(BCH_FS_errors_not_fixed, &c->flags)) {
0bc166ff564f9e fs/bcachefs/recovery.c      Kent Overstreet 2019-03-28  856  			SET_BCH_SB_HAS_ERRORS(c->disk_sb.sb, 0);
aae15aafcd43ec fs/bcachefs/recovery.c      Kent Overstreet 2021-04-24  857  			SET_BCH_SB_HAS_TOPOLOGY_ERRORS(c->disk_sb.sb, 0);
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  858  			write_sb = true;
0bc166ff564f9e fs/bcachefs/recovery.c      Kent Overstreet 2019-03-28  859  		}
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  860  
f04158290d8bdd fs/bcachefs/recovery.c      Kent Overstreet 2024-04-20  861  		if (bch2_blacklist_entries_gc(c))
f04158290d8bdd fs/bcachefs/recovery.c      Kent Overstreet 2024-04-20  862  			write_sb = true;
f04158290d8bdd fs/bcachefs/recovery.c      Kent Overstreet 2024-04-20  863  
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  864  		if (!(c->sb.compat & BIT_ULL(BCH_COMPAT_no_stale_ptrs)) &&
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  865  		    (c->recovery.passes_complete & BIT_ULL(BCH_RECOVERY_PASS_check_extents)) &&
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  866  		    (c->recovery.passes_complete & BIT_ULL(BCH_RECOVERY_PASS_check_indirect_extents))) {
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  867  			c->disk_sb.sb->compat[0] |= cpu_to_le64(BIT_ULL(BCH_COMPAT_no_stale_ptrs));
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  868  			write_sb = true;
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  869  		}
4053532afa1c08 fs/bcachefs/recovery.c      Kent Overstreet 2025-09-07  870  
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  871  		if (write_sb)
932aa837453ada fs/bcachefs/recovery.c      Kent Overstreet 2019-03-11  872  			bch2_write_super(c);
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  873  	}
1dd7f9d98de074 fs/bcachefs/recovery.c      Kent Overstreet 2019-04-04  874  
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  875  	if (!(c->sb.compat & (1ULL << BCH_COMPAT_extents_above_btree_updates_done)) ||
73bd774d28d2b2 fs/bcachefs/recovery.c      Kent Overstreet 2023-07-06  876  	    c->sb.version_min < bcachefs_metadata_version_btree_ptr_sectors_written) {
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  877  		struct bch_move_stats stats;
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  878  
b2d1d56b1d34bc fs/bcachefs/recovery.c      Kent Overstreet 2022-11-13  879  		bch2_move_stats_init(&stats, "recovery");
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  880  
f0a5f22957fbf9 fs/bcachefs/recovery.c      Kent Overstreet 2025-07-14  881  		CLASS(printbuf, buf)();
fbf9270817249b fs/bcachefs/recovery.c      Kent Overstreet 2023-11-16  882  		bch2_version_to_text(&buf, c->sb.version_min);
fbf9270817249b fs/bcachefs/recovery.c      Kent Overstreet 2023-11-16  883  		bch_info(c, "scanning for old btree nodes: min_version %s", buf.buf);
fbf9270817249b fs/bcachefs/recovery.c      Kent Overstreet 2023-11-16  884  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  885  		try(bch2_fs_read_write_early(c));
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  886  		try(bch2_scan_old_btree_nodes(c, &stats));
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  887  		bch_info(c, "scanning for old btree nodes done");
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  888  	}
d93cf6858fe67a fs/bcachefs/recovery.c      Kent Overstreet 2021-12-27  889  
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  890  	if (test_bit(BCH_FS_need_delete_dead_snapshots, &c->flags) &&
62719cf33c3ad6 fs/bcachefs/recovery.c      Kent Overstreet 2023-12-23  891  	    !c->opts.nochanges) {
4ab35c34d5ab25 fs/bcachefs/recovery.c      Kent Overstreet 2022-07-14  892  		bch2_fs_read_write_early(c);
4ab35c34d5ab25 fs/bcachefs/recovery.c      Kent Overstreet 2022-07-14  893  		bch2_delete_dead_snapshots_async(c);
4ab35c34d5ab25 fs/bcachefs/recovery.c      Kent Overstreet 2022-07-14  894  	}
4932e07ea04bcc fs/bcachefs/recovery.c      Kent Overstreet 2021-04-24  895  fsck_err:
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  896  	return ret;
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  897  }
4f8305ce7dfa6f fs/bcachefs/init/recovery.c Kent Overstreet 2025-10-30  898  

:::::: The code at line 687 was first introduced by commit
:::::: adbcada43fa79197224b5a522b1faaf222b43bcd bcachefs: Don't require flush/fua on every journal write

:::::: TO: Kent Overstreet <kent.overstreet@gmail.com>
:::::: CC: Kent Overstreet <kent.overstreet@linux.dev>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-06-29 16:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-29 16:43 [koverstreet-bcachefs:bcachefs-rebalance_v2 738/799] fs/bcachefs/init/recovery.c:687 __bch2_fs_recovery() warn: variable dereferenced before check 'clean' (see line 619) kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2026-02-23  3:57 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.