Re: [PATCH v2 1/2] erofs: avoid hardcoded blocksize for subpage block support

kernel test robot
2023-02-17T16:56:37Z

Hi Jingbo,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on xiang-erofs/dev-test]
[also build test ERROR on xiang-erofs/dev next-20230217]
[cannot apply to xiang-erofs/fixes linus/master v6.2-rc8]
[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/Jingbo-Xu/erofs-set-block-size-to-the-on-disk-block-size/20230217-135145
base: https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git dev-test
patch link: https://lore.kernel.org/r/20230217055016.71462-1-jefflexu%40linux.alibaba.com
patch subject: [PATCH v2 1/2] erofs: avoid hardcoded blocksize for subpage block support
config: i386-randconfig-a014 (https://download.01.org/0day-ci/archive/20230218/202302180056.Qg8HFrkU-lkp@intel.com/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/f3fa173833cc0b885d46a6c71796687a03ce25e1
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jingbo-Xu/erofs-set-block-size-to-the-on-disk-block-size/20230217-135145
git checkout f3fa173833cc0b885d46a6c71796687a03ce25e1
# 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@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202302180056.Qg8HFrkU-lkp@intel.com/

All errors (new ones prefixed by >>):

ld: fs/erofs/data.o: in function `erofs_map_blocks_flatmode':
>> fs/erofs/data.c:89: undefined reference to `__divdi3'
ld: fs/erofs/namei.o: in function `erofs_find_target_block':
>> fs/erofs/namei.c:93: undefined reference to `__divdi3'
ld: fs/erofs/zmap.o: in function `compacted_load_cluster_from_disk':
>> fs/erofs/zmap.c:252: undefined reference to `__divdi3'

vim +89 fs/erofs/data.c

79
80 static int erofs_map_blocks_flatmode(struct inode *inode,
81 struct erofs_map_blocks *map)
82 {
83 erofs_blk_t nblocks, lastblk;
84 u64 offset = map->m_la;
85 struct erofs_inode *vi = EROFS_I(inode);
86 struct super_block *sb = inode->i_sb;
87 bool tailendpacking = (vi->datalayout == EROFS_INODE_FLAT_INLINE);
88
> 89 nblocks = DIV_ROUND_UP(inode->i_size, sb->s_blocksize);
90 lastblk = nblocks - tailendpacking;
91
92 /* there is no hole in flatmode */
93 map->m_flags = EROFS_MAP_MAPPED;
94 if (offset < erofs_pos(sb, lastblk)) {
95 map->m_pa = erofs_pos(sb, vi->raw_blkaddr) + map->m_la;
96 map->m_plen = erofs_pos(sb, lastblk) - offset;
97 } else if (tailendpacking) {
98 map->m_pa = erofs_iloc(inode) + vi->inode_isize +
99 vi->xattr_isize + erofs_blkoff(sb, offset);
100 map->m_plen = inode->i_size - offset;
101
102 /* inline data should be located in the same meta block */
103 if (erofs_blkoff(sb, map->m_pa) + map->m_plen > sb->s_blocksize) {
104 erofs_err(sb,
105 "inline data cross block boundary @ nid %llu",
106 vi->nid);
107 DBG_BUGON(1);
108 return -EFSCORRUPTED;
109 }
110 map->m_flags |= EROFS_MAP_META;
111 } else {
112 erofs_err(sb,
113 "internal error @ nid: %llu (size %llu), m_la 0x%llx",
114 vi->nid, inode->i_size, map->m_la);
115 DBG_BUGON(1);
116 return -EIO;
117 }
118 return 0;
119 }
120

--
0-DAY CI Kernel Test Service