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]

Attachment: .config.gz
Description: application/gzip

Reply via email to