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 <[email protected]> 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/[email protected]
.config.gz
Description: application/gzip
