* [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.