tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: fdaf9a5840acaab18694a19e0eb0aa51162eeeed commit: d5f5bd546552a94eefd68c42f40f778c40a89d2c btrfs: pass the dentry to btrfs_log_new_name() instead of the inode date: 2 months ago config: x86_64-randconfig-a011 (https://download.01.org/0day-ci/archive/20220526/202205260024.TLEp6Pj2-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-1) 11.3.0 reproduce (this is a W=1 build): # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d5f5bd546552a94eefd68c42f40f778c40a89d2c git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout d5f5bd546552a94eefd68c42f40f778c40a89d2c # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> fs/btrfs/tree-log.c:6792: 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 +6792 fs/btrfs/tree-log.c 6790 6791 /** > 6792 * Update the log after adding a new name for an inode. 6793 * 6794 * @trans: Transaction handle. 6795 * @old_dentry: The dentry associated with the old name and the old 6796 * parent directory. 6797 * @old_dir: The inode of the previous parent directory for the case 6798 * of a rename. For a link operation, it must be NULL. 6799 * @parent: The dentry associated with the directory under which the 6800 * new name is located. 6801 * 6802 * Call this after adding a new name for an inode, as a result of a link or 6803 * rename operation, and it will properly update the log to reflect the new name. 6804 */ 6805 void btrfs_log_new_name(struct btrfs_trans_handle *trans, 6806 struct dentry *old_dentry, struct btrfs_inode *old_dir, 6807 struct dentry *parent) 6808 { 6809 struct btrfs_inode *inode = BTRFS_I(d_inode(old_dentry)); 6810 struct btrfs_log_ctx ctx; 6811 6812 /* 6813 * this will force the logging code to walk the dentry chain 6814 * up for the file 6815 */ 6816 if (!S_ISDIR(inode->vfs_inode.i_mode)) 6817 inode->last_unlink_trans = trans->transid; 6818 6819 /* 6820 * if this inode hasn't been logged and directory we're renaming it 6821 * from hasn't been logged, we don't need to log it 6822 */ 6823 if (!inode_logged(trans, inode) && 6824 (!old_dir || !inode_logged(trans, old_dir))) 6825 return; 6826 6827 /* 6828 * If we are doing a rename (old_dir is not NULL) from a directory that 6829 * was previously logged, make sure the next log attempt on the directory 6830 * is not skipped and logs the inode again. This is because the log may 6831 * not currently be authoritative for a range including the old 6832 * BTRFS_DIR_INDEX_KEY key, so we want to make sure after a log replay we 6833 * do not end up with both the new and old dentries around (in case the 6834 * inode is a directory we would have a directory with two hard links and 6835 * 2 inode references for different parents). The next log attempt of 6836 * old_dir will happen at btrfs_log_all_parents(), called through 6837 * btrfs_log_inode_parent() below, because we have previously set 6838 * inode->last_unlink_trans to the current transaction ID, either here or 6839 * at btrfs_record_unlink_dir() in case the inode is a directory. 6840 */ 6841 if (old_dir) 6842 old_dir->logged_trans = 0; 6843 6844 btrfs_init_log_ctx(&ctx, &inode->vfs_inode); 6845 ctx.logging_new_name = true; 6846 /* 6847 * We don't care about the return value. If we fail to log the new name 6848 * then we know the next attempt to sync the log will fallback to a full 6849 * transaction commit (due to a call to btrfs_set_log_full_commit()), so 6850 * we don't need to worry about getting a log committed that has an 6851 * inconsistent state after a rename operation. 6852 */ 6853 btrfs_log_inode_parent(trans, inode, parent, LOG_INODE_EXISTS, &ctx); 6854 } 6855 -- 0-DAY CI Kernel Test Service https://01.org/lkp