Hi Yangtao, I love your patch! Yet something to improve: [auto build test ERROR on jack-fs/for_next] [also build test ERROR on vfs-idmapping/for-next linus/master v6.3-rc1] [cannot apply to next-20230310] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Yangtao-Li/udf-use-wrapper-i_blocksize-in-udf_discard_prealloc/20230310-110943 base: https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git for_next patch link: https://lore.kernel.org/r/20230310030821.66090-1-frank.li%40vivo.com patch subject: [PATCH 1/3] fs/ntfs3: use wrapper i_blocksize() in ntfs_zero_range() config: i386-randconfig-a003 (https://download.01.org/0day-ci/archive/20230310/202303102227.ih1dwtNV-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/01c0c800dc0c15141eb3cb9d9e66cfc8b001be70 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Yangtao-Li/udf-use-wrapper-i_blocksize-in-udf_discard_prealloc/20230310-110943 git checkout 01c0c800dc0c15141eb3cb9d9e66cfc8b001be70 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=i386 olddefconfig make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202303102227.ih1dwtNV-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): ld: fs/ntfs3/file.o: in function `ntfs_zero_range': >> fs/ntfs3/file.c:195: undefined reference to `__divdi3' vim +195 fs/ntfs3/file.c 171 172 /* 173 * ntfs_zero_range - Helper function for punch_hole. 174 * 175 * It zeroes a range [vbo, vbo_to). 176 */ 177 static int ntfs_zero_range(struct inode *inode, u64 vbo, u64 vbo_to) 178 { 179 int err = 0; 180 struct address_space *mapping = inode->i_mapping; 181 u32 blocksize = i_blocksize(inode); 182 pgoff_t idx = vbo >> PAGE_SHIFT; 183 u32 from = vbo & (PAGE_SIZE - 1); 184 pgoff_t idx_end = (vbo_to + PAGE_SIZE - 1) >> PAGE_SHIFT; 185 loff_t page_off; 186 struct buffer_head *head, *bh; 187 u32 bh_next, bh_off, to; 188 sector_t iblock; 189 struct page *page; 190 191 for (; idx < idx_end; idx += 1, from = 0) { 192 page_off = (loff_t)idx << PAGE_SHIFT; 193 to = (page_off + PAGE_SIZE) > vbo_to ? (vbo_to - page_off) 194 : PAGE_SIZE; > 195 iblock = page_off / i_blocksize(inode); 196 197 page = find_or_create_page(mapping, idx, 198 mapping_gfp_constraint(mapping, 199 ~__GFP_FS)); 200 if (!page) 201 return -ENOMEM; 202 203 if (!page_has_buffers(page)) 204 create_empty_buffers(page, blocksize, 0); 205 206 bh = head = page_buffers(page); 207 bh_off = 0; 208 do { 209 bh_next = bh_off + blocksize; 210 211 if (bh_next <= from || bh_off >= to) 212 continue; 213 214 if (!buffer_mapped(bh)) { 215 ntfs_get_block(inode, iblock, bh, 0); 216 /* Unmapped? It's a hole - nothing to do. */ 217 if (!buffer_mapped(bh)) 218 continue; 219 } 220 221 /* Ok, it's mapped. Make sure it's up-to-date. */ 222 if (PageUptodate(page)) 223 set_buffer_uptodate(bh); 224 225 if (!buffer_uptodate(bh)) { 226 lock_buffer(bh); 227 bh->b_end_io = end_buffer_read_sync; 228 get_bh(bh); 229 submit_bh(REQ_OP_READ, bh); 230 231 wait_on_buffer(bh); 232 if (!buffer_uptodate(bh)) { 233 unlock_page(page); 234 put_page(page); 235 err = -EIO; 236 goto out; 237 } 238 } 239 240 mark_buffer_dirty(bh); 241 242 } while (bh_off = bh_next, iblock += 1, 243 head != (bh = bh->b_this_page)); 244 245 zero_user_segment(page, from, to); 246 247 unlock_page(page); 248 put_page(page); 249 cond_resched(); 250 } 251 out: 252 mark_inode_dirty(inode); 253 return err; 254 } 255 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests