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
next 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.