tree: https://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs.git xfs-async-inode-reclaim head: a6b06a056446a604d909fd24f24c78f08f5be671 commit: 689797bdef2cbd9e93b6d435127da6f513d9d3cb [29/30] xfs: factor xfs_iflush_done config: m68k-randconfig-r005-20200526 (attached as .config) compiler: m68k-linux-gcc (GCC) 9.3.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 git checkout 689797bdef2cbd9e93b6d435127da6f513d9d3cb # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>, old ones prefixed by <<): >> fs/xfs/xfs_inode_item.c:670:1: warning: no previous prototype for 'xfs_iflush_ail_updates' [-Wmissing-prototypes] 670 | xfs_iflush_ail_updates( | ^~~~~~~~~~~~~~~~~~~~~~ >> fs/xfs/xfs_inode_item.c:702:1: warning: no previous prototype for 'xfs_iflush_finish' [-Wmissing-prototypes] 702 | xfs_iflush_finish( | ^~~~~~~~~~~~~~~~~ vim +/xfs_iflush_ail_updates +670 fs/xfs/xfs_inode_item.c 662 663 664 /* 665 * We only want to pull the item from the AIL if it is actually there 666 * and its location in the log has not changed since we started the 667 * flush. Thus, we only bother if the inode's lsn has not changed. 668 */ 669 void > 670 xfs_iflush_ail_updates( 671 struct xfs_ail *ailp, 672 struct list_head *list) 673 { 674 struct xfs_log_item *lip; 675 xfs_lsn_t tail_lsn = 0; 676 677 /* this is an opencoded batch version of xfs_trans_ail_delete */ 678 spin_lock(&ailp->ail_lock); 679 list_for_each_entry(lip, list, li_bio_list) { 680 struct xfs_inode_log_item *iip = INODE_ITEM(lip); 681 xfs_lsn_t lsn; 682 683 if (iip->ili_flush_lsn != lip->li_lsn) { 684 xfs_clear_li_failed(lip); 685 continue; 686 } 687 688 lsn = xfs_ail_delete_one(ailp, lip); 689 if (!tail_lsn && lsn) 690 tail_lsn = lsn; 691 } 692 xfs_ail_update_finish(ailp, tail_lsn); 693 } 694 695 /* 696 * Walk the list of inodes that have completed their IOs. If they are clean 697 * remove them from the list and dissociate them from the buffer. Buffers that 698 * are still dirty remain linked to the buffer and on the list. Caller must 699 * handle them appropriately. 700 */ 701 void > 702 xfs_iflush_finish( 703 struct xfs_buf *bp, 704 struct list_head *list) 705 { 706 struct xfs_log_item *lip, *n; 707 708 list_for_each_entry_safe(lip, n, list, li_bio_list) { 709 struct xfs_inode_log_item *iip = INODE_ITEM(lip); 710 bool drop_buffer = false; 711 712 spin_lock(&iip->ili_lock); 713 iip->ili_last_fields = 0; 714 iip->ili_flush_lsn = 0; 715 716 /* 717 * Remove the reference to the cluster buffer if the inode is 718 * clean in memory and drop the buffer reference once we've 719 * dropped the locks we hold. 720 */ 721 ASSERT(iip->ili_item.li_buf == bp); 722 if (!iip->ili_fields) { 723 iip->ili_item.li_buf = NULL; 724 list_del_init(&lip->li_bio_list); 725 drop_buffer = true; 726 } 727 spin_unlock(&iip->ili_lock); 728 xfs_ifunlock(iip->ili_inode); 729 if (drop_buffer) 730 xfs_buf_rele(bp); 731 } 732 } 733 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip