[Cluster-devel] [gfs2:page_mkwrite-off-by-one /7] fs/f2fs/file.c:96: undefined reference to `page_mkwrite_check_truncate'

kbuild test robot lkp at intel.com
Sat Feb 15 07:47:09 UTC 2020


tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git page_mkwrite-off-by-one
head:   29ccadba67d4954fb1ce96b1f4c9a57d04e740d8
commit: 383c2d5898337fafa2bc548aa133a8b8af1003fe [/7] f2fs: Switch to page_mkwrite_check_truncate
config: microblaze-randconfig-a001-20200215 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 383c2d5898337fafa2bc548aa133a8b8af1003fe
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=microblaze 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   fs/buffer.o: In function `block_page_mkwrite':
   fs/buffer.c:2505: undefined reference to `page_mkwrite_check_truncate'
   fs/iomap/buffered-io.o: In function `iomap_page_mkwrite':
   fs/iomap/buffered-io.c:1084: undefined reference to `page_mkwrite_check_truncate'
   fs/ext4/inode.o: In function `ext4_page_mkwrite':
   fs/ext4/inode.c:5939: undefined reference to `page_mkwrite_check_truncate'
   fs/f2fs/file.o: In function `f2fs_vm_page_mkwrite':
>> fs/f2fs/file.c:96: undefined reference to `page_mkwrite_check_truncate'
   drivers/md/bcache/bset.o: In function `bch_btree_iter_next':
   drivers/md/bcache/bset.c:1155: undefined reference to `_GLOBAL_OFFSET_TABLE_'
   Segmentation fault

vim +96 fs/f2fs/file.c

    47	
    48	static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf)
    49	{
    50		struct page *page = vmf->page;
    51		struct inode *inode = file_inode(vmf->vma->vm_file);
    52		struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
    53		struct dnode_of_data dn;
    54		bool need_alloc = true;
    55		int offset, err = 0;
    56	
    57		if (unlikely(f2fs_cp_error(sbi))) {
    58			err = -EIO;
    59			goto err;
    60		}
    61	
    62		if (!f2fs_is_checkpoint_ready(sbi)) {
    63			err = -ENOSPC;
    64			goto err;
    65		}
    66	
    67	#ifdef CONFIG_F2FS_FS_COMPRESSION
    68		if (f2fs_compressed_file(inode)) {
    69			int ret = f2fs_is_compressed_cluster(inode, page->index);
    70	
    71			if (ret < 0) {
    72				err = ret;
    73				goto err;
    74			} else if (ret) {
    75				if (ret < F2FS_I(inode)->i_cluster_size) {
    76					err = -EAGAIN;
    77					goto err;
    78				}
    79				need_alloc = false;
    80			}
    81		}
    82	#endif
    83		/* should do out of any locked page */
    84		if (need_alloc)
    85			f2fs_balance_fs(sbi, true);
    86	
    87		sb_start_pagefault(inode->i_sb);
    88	
    89		f2fs_bug_on(sbi, f2fs_has_inline_data(inode));
    90	
    91		file_update_time(vmf->vma->vm_file);
    92		down_read(&F2FS_I(inode)->i_mmap_sem);
    93		lock_page(page);
    94		offset = -EFAULT;
    95		if (likely(PageUptodate(page)))
  > 96			offset = page_mkwrite_check_truncate(page, inode);
    97		if (unlikely(offset < 0)) {
    98			unlock_page(page);
    99			err = offset;
   100			goto out_sem;
   101		}
   102	
   103		if (need_alloc) {
   104			/* block allocation */
   105			__do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, true);
   106			set_new_dnode(&dn, inode, NULL, NULL, 0);
   107			err = f2fs_get_block(&dn, page->index);
   108			f2fs_put_dnode(&dn);
   109			__do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, false);
   110			if (err) {
   111				unlock_page(page);
   112				goto out_sem;
   113			}
   114		}
   115	
   116		/* fill the page */
   117		f2fs_wait_on_page_writeback(page, DATA, false, true);
   118	
   119		/* wait for GCed page writeback via META_MAPPING */
   120		f2fs_wait_on_block_writeback(inode, dn.data_blkaddr);
   121	
   122		/*
   123		 * check to see if the page is mapped already (no holes)
   124		 */
   125		if (PageMappedToDisk(page))
   126			goto out_sem;
   127	
   128		if (offset != PAGE_SIZE)
   129			zero_user_segment(page, offset, PAGE_SIZE);
   130		set_page_dirty(page);
   131		if (!PageUptodate(page))
   132			SetPageUptodate(page);
   133	
   134		f2fs_update_iostat(sbi, APP_MAPPED_IO, F2FS_BLKSIZE);
   135		f2fs_update_time(sbi, REQ_TIME);
   136	
   137		trace_f2fs_vm_page_mkwrite(page, DATA);
   138	out_sem:
   139		up_read(&F2FS_I(inode)->i_mmap_sem);
   140	
   141		sb_end_pagefault(inode->i_sb);
   142	err:
   143		return block_page_mkwrite_return(err);
   144	}
   145	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 29868 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20200215/66420b66/attachment.gz>


More information about the Cluster-devel mailing list