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

kernel test robot lkp at intel.com
Sat Feb 18 03:56:21 AEDT 2023


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 at 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
https://github.com/intel/lkp-tests


More information about the Linux-erofs mailing list