All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [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)
Date: Mon, 23 Feb 2026 11:57:10 +0800	[thread overview]
Message-ID: <202602231118.uHZLOP5d-lkp@intel.com> (raw)

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

             reply	other threads:[~2026-02-23  3:57 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-23  3:57 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202602231118.uHZLOP5d-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.