tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 196d330d7fb1e7cc0d85641c89ce4602cb36f12e commit: 4f847b757f9c206d86986d302a94382c14721031 [5106/7526] btrfs: pass the dentry to btrfs_log_new_name() instead of the inode config: x86_64-randconfig-a012 (https://download.01.org/0day-ci/archive/20220224/202202240704.pQD40A9L-lkp@xxxxxxxxx/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=4f847b757f9c206d86986d302a94382c14721031 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 4f847b757f9c206d86986d302a94382c14721031 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/btrfs/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> fs/btrfs/tree-log.c:6755: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * Update the log after adding a new name for an inode. vim +6755 fs/btrfs/tree-log.c 6753 6754 /** > 6755 * Update the log after adding a new name for an inode. 6756 * 6757 * @trans: Transaction handle. 6758 * @old_dentry: The dentry associated with the old name and the old 6759 * parent directory. 6760 * @old_dir: The inode of the previous parent directory for the case 6761 * of a rename. For a link operation, it must be NULL. 6762 * @parent: The dentry associated with the directory under which the 6763 * new name is located. 6764 * 6765 * Call this after adding a new name for an inode, as a result of a link or 6766 * rename operation, and it will properly update the log to reflect the new name. 6767 */ 6768 void btrfs_log_new_name(struct btrfs_trans_handle *trans, 6769 struct dentry *old_dentry, struct btrfs_inode *old_dir, 6770 struct dentry *parent) 6771 { 6772 struct btrfs_inode *inode = BTRFS_I(d_inode(old_dentry)); 6773 struct btrfs_log_ctx ctx; 6774 6775 /* 6776 * this will force the logging code to walk the dentry chain 6777 * up for the file 6778 */ 6779 if (!S_ISDIR(inode->vfs_inode.i_mode)) 6780 inode->last_unlink_trans = trans->transid; 6781 6782 /* 6783 * if this inode hasn't been logged and directory we're renaming it 6784 * from hasn't been logged, we don't need to log it 6785 */ 6786 if (!inode_logged(trans, inode) && 6787 (!old_dir || !inode_logged(trans, old_dir))) 6788 return; 6789 6790 /* 6791 * If we are doing a rename (old_dir is not NULL) from a directory that 6792 * was previously logged, make sure the next log attempt on the directory 6793 * is not skipped and logs the inode again. This is because the log may 6794 * not currently be authoritative for a range including the old 6795 * BTRFS_DIR_INDEX_KEY key, so we want to make sure after a log replay we 6796 * do not end up with both the new and old dentries around (in case the 6797 * inode is a directory we would have a directory with two hard links and 6798 * 2 inode references for different parents). The next log attempt of 6799 * old_dir will happen at btrfs_log_all_parents(), called through 6800 * btrfs_log_inode_parent() below, because we have previously set 6801 * inode->last_unlink_trans to the current transaction ID, either here or 6802 * at btrfs_record_unlink_dir() in case the inode is a directory. 6803 */ 6804 if (old_dir) 6805 old_dir->logged_trans = 0; 6806 6807 btrfs_init_log_ctx(&ctx, &inode->vfs_inode); 6808 ctx.logging_new_name = true; 6809 /* 6810 * We don't care about the return value. If we fail to log the new name 6811 * then we know the next attempt to sync the log will fallback to a full 6812 * transaction commit (due to a call to btrfs_set_log_full_commit()), so 6813 * we don't need to worry about getting a log committed that has an 6814 * inconsistent state after a rename operation. 6815 */ 6816 btrfs_log_inode_parent(trans, inode, parent, LOG_INODE_EXISTS, &ctx); 6817 } 6818 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx