Re: [kdave-btrfs-devel:misc-next 149/153] 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

From: Filipe Manana
Date: Wed Jan 26 2022 - 05:32:03 EST




On 25/01/22 23:12, kernel test robot wrote:
> tree: https://github.com/kdave/btrfs-devel.git misc-next
> head: 8e5d6a5c062f370d4d0b2dace7e95ab40c6ce3dd
> commit: 6bfc5d45946acd8286fb026137f20ee8747a50f1 [149/153] btrfs: pass the dentry to btrfs_log_new_name() instead of the inode
> config: nds32-allyesconfig (https://download.01.org/0day-ci/archive/20220126/202201260759.edlA9lHT-lkp@xxxxxxxxx/config)
> compiler: nds32le-linux-gcc (GCC) 11.2.0
> 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://github.com/kdave/btrfs-devel/commit/6bfc5d45946acd8286fb026137f20ee8747a50f1
> git remote add kdave-btrfs-devel https://github.com/kdave/btrfs-devel.git
> git fetch --no-tags kdave-btrfs-devel misc-next
> git checkout 6bfc5d45946acd8286fb026137f20ee8747a50f1
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=nds32 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.

The patch I submitted did not add the "/**":

https://lore.kernel.org/linux-btrfs/1f0d5aaf498afa64ef3582cb9d9d24bc5f888ab2.1642676248.git.fdmanana@xxxxxxxx/T/#u

However I see that David's misc-next branch, the patch adds that:

https://github.com/kdave/btrfs-devel/commit/6bfc5d45946acd8286fb026137f20ee8747a50f1

David, did you edit the patch? Why?

thanks

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