tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: e143016b56ecb0fcda5bb6026b0a25fe55274f56 commit: c25d6a495d7f6c73c4f14d31c5e1b80ff8cbe338 [3807/4552] bcachefs: Cleanup redundant snapshot nodes config: powerpc-randconfig-r006-20230912 (https://download.01.org/0day-ci/archive/20230914/202309140719.SIXNytRW-lkp@xxxxxxxxx/config) compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230914/202309140719.SIXNytRW-lkp@xxxxxxxxx/reproduce) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202309140719.SIXNytRW-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): In file included from fs/bcachefs/snapshot.c:3: In file included from fs/bcachefs/bcachefs.h:188: In file included from include/linux/bio.h:10: In file included from include/linux/blk_types.h:10: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from arch/powerpc/include/asm/hardirq.h:6: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:672: arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 47 | DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 | (p, b, c), pio, p) | ~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:669:3: note: expanded from macro 'DEF_PCI_AC_NORET' 669 | __do_##name al; \ | ^~~~~~~~~~~~~~ <scratch space>:211:1: note: expanded from here 211 | __do_insl | ^ arch/powerpc/include/asm/io.h:611:56: note: expanded from macro '__do_insl' 611 | #define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) | ~~~~~~~~~~~~~~~~~~~~~^ In file included from fs/bcachefs/snapshot.c:3: In file included from fs/bcachefs/bcachefs.h:188: In file included from include/linux/bio.h:10: In file included from include/linux/blk_types.h:10: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from arch/powerpc/include/asm/hardirq.h:6: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:672: arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 49 | DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 | (p, b, c), pio, p) | ~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:669:3: note: expanded from macro 'DEF_PCI_AC_NORET' 669 | __do_##name al; \ | ^~~~~~~~~~~~~~ <scratch space>:213:1: note: expanded from here 213 | __do_outsb | ^ arch/powerpc/include/asm/io.h:612:58: note: expanded from macro '__do_outsb' 612 | #define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) | ~~~~~~~~~~~~~~~~~~~~~^ In file included from fs/bcachefs/snapshot.c:3: In file included from fs/bcachefs/bcachefs.h:188: In file included from include/linux/bio.h:10: In file included from include/linux/blk_types.h:10: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from arch/powerpc/include/asm/hardirq.h:6: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:672: arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 51 | DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 52 | (p, b, c), pio, p) | ~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:669:3: note: expanded from macro 'DEF_PCI_AC_NORET' 669 | __do_##name al; \ | ^~~~~~~~~~~~~~ <scratch space>:215:1: note: expanded from here 215 | __do_outsw | ^ arch/powerpc/include/asm/io.h:613:58: note: expanded from macro '__do_outsw' 613 | #define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) | ~~~~~~~~~~~~~~~~~~~~~^ In file included from fs/bcachefs/snapshot.c:3: In file included from fs/bcachefs/bcachefs.h:188: In file included from include/linux/bio.h:10: In file included from include/linux/blk_types.h:10: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from arch/powerpc/include/asm/hardirq.h:6: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:672: arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 53 | DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 | (p, b, c), pio, p) | ~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:669:3: note: expanded from macro 'DEF_PCI_AC_NORET' 669 | __do_##name al; \ | ^~~~~~~~~~~~~~ <scratch space>:217:1: note: expanded from here 217 | __do_outsl | ^ arch/powerpc/include/asm/io.h:614:58: note: expanded from macro '__do_outsl' 614 | #define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) | ~~~~~~~~~~~~~~~~~~~~~^ >> fs/bcachefs/snapshot.c:942:5: warning: no previous prototype for function 'bch2_snapshot_node_delete' [-Wmissing-prototypes] 942 | int bch2_snapshot_node_delete(struct btree_trans *trans, u32 id) | ^ fs/bcachefs/snapshot.c:942:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 942 | int bch2_snapshot_node_delete(struct btree_trans *trans, u32 id) | ^ | static 7 warnings generated. Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for HOTPLUG_CPU Depends on [n]: SMP [=y] && (PPC_PSERIES [=n] || PPC_PMAC [=n] || PPC_POWERNV [=n] || FSL_SOC_BOOKE [=n]) Selected by [y]: - PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=n] || ARCH_HIBERNATION_POSSIBLE [=y]) && PM_SLEEP [=y] vim +/bch2_snapshot_node_delete +942 fs/bcachefs/snapshot.c 941 > 942 int bch2_snapshot_node_delete(struct btree_trans *trans, u32 id) 943 { 944 struct bch_fs *c = trans->c; 945 struct btree_iter iter, p_iter = (struct btree_iter) { NULL }; 946 struct btree_iter c_iter = (struct btree_iter) { NULL }; 947 struct btree_iter tree_iter = (struct btree_iter) { NULL }; 948 struct bkey_s_c_snapshot s; 949 u32 parent_id, child_id; 950 unsigned i; 951 int ret = 0; 952 953 s = bch2_bkey_get_iter_typed(trans, &iter, BTREE_ID_snapshots, POS(0, id), 954 BTREE_ITER_INTENT, snapshot); 955 ret = bkey_err(s); 956 bch2_fs_inconsistent_on(bch2_err_matches(ret, ENOENT), c, 957 "missing snapshot %u", id); 958 959 if (ret) 960 goto err; 961 962 BUG_ON(s.v->children[1]); 963 964 parent_id = le32_to_cpu(s.v->parent); 965 child_id = le32_to_cpu(s.v->children[0]); 966 967 if (parent_id) { 968 struct bkey_i_snapshot *parent; 969 970 parent = bch2_bkey_get_mut_typed(trans, &p_iter, 971 BTREE_ID_snapshots, POS(0, parent_id), 972 0, snapshot); 973 ret = PTR_ERR_OR_ZERO(parent); 974 bch2_fs_inconsistent_on(bch2_err_matches(ret, ENOENT), c, 975 "missing snapshot %u", parent_id); 976 if (unlikely(ret)) 977 goto err; 978 979 /* find entry in parent->children for node being deleted */ 980 for (i = 0; i < 2; i++) 981 if (le32_to_cpu(parent->v.children[i]) == id) 982 break; 983 984 if (bch2_fs_inconsistent_on(i == 2, c, 985 "snapshot %u missing child pointer to %u", 986 parent_id, id)) 987 goto err; 988 989 parent->v.children[i] = le32_to_cpu(child_id); 990 991 normalize_snapshot_child_pointers(&parent->v); 992 } 993 994 if (child_id) { 995 struct bkey_i_snapshot *child; 996 997 child = bch2_bkey_get_mut_typed(trans, &c_iter, 998 BTREE_ID_snapshots, POS(0, child_id), 999 0, snapshot); 1000 ret = PTR_ERR_OR_ZERO(child); 1001 bch2_fs_inconsistent_on(bch2_err_matches(ret, ENOENT), c, 1002 "missing snapshot %u", child_id); 1003 if (unlikely(ret)) 1004 goto err; 1005 1006 child->v.parent = cpu_to_le32(parent_id); 1007 1008 if (!child->v.parent) { 1009 child->v.skip[0] = 0; 1010 child->v.skip[1] = 0; 1011 child->v.skip[2] = 0; 1012 } 1013 } 1014 1015 if (!parent_id) { 1016 /* 1017 * We're deleting the root of a snapshot tree: update the 1018 * snapshot_tree entry to point to the new root, or delete it if 1019 * this is the last snapshot ID in this tree: 1020 */ 1021 struct bkey_i_snapshot_tree *s_t; 1022 1023 BUG_ON(s.v->children[1]); 1024 1025 s_t = bch2_bkey_get_mut_typed(trans, &tree_iter, 1026 BTREE_ID_snapshot_trees, POS(0, le32_to_cpu(s.v->tree)), 1027 0, snapshot_tree); 1028 ret = PTR_ERR_OR_ZERO(s_t); 1029 if (ret) 1030 goto err; 1031 1032 if (s.v->children[0]) { 1033 s_t->v.root_snapshot = s.v->children[0]; 1034 } else { 1035 s_t->k.type = KEY_TYPE_deleted; 1036 set_bkey_val_u64s(&s_t->k, 0); 1037 } 1038 } 1039 1040 ret = bch2_btree_delete_at(trans, &iter, 0); 1041 err: 1042 bch2_trans_iter_exit(trans, &tree_iter); 1043 bch2_trans_iter_exit(trans, &p_iter); 1044 bch2_trans_iter_exit(trans, &c_iter); 1045 bch2_trans_iter_exit(trans, &iter); 1046 return ret; 1047 } 1048 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki