[PATCH 2/2] erofs: decompress in endio if possible

kernel test robot lkp at intel.com
Fri Mar 5 19:21:35 AEDT 2021


Hi Huang,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on xiang-erofs/dev-test]
[cannot apply to v5.12-rc1 next-20210305]
[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]

url:    https://github.com/0day-ci/linux/commits/Huang-Jianan/erofs-avoid-memory-allocation-failure-during-rolling-decompression/20210305-142329
base:   https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git dev-test
config: parisc-randconfig-r012-20210305 (attached as .config)
compiler: hppa64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/ecb1173ba28392f322cbb4c9cb1a66524b10dd78
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Huang-Jianan/erofs-avoid-memory-allocation-failure-during-rolling-decompression/20210305-142329
        git checkout ecb1173ba28392f322cbb4c9cb1a66524b10dd78
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   fs/erofs/super.c: In function 'erofs_read_superblock':
>> fs/erofs/super.c:191:5: error: 'struct erofs_sb_info' has no member named 'sync_decompress'
     191 |  sbi->sync_decompress = false;
         |     ^~


vim +191 fs/erofs/super.c

   124	
   125	static int erofs_read_superblock(struct super_block *sb)
   126	{
   127		struct erofs_sb_info *sbi;
   128		struct page *page;
   129		struct erofs_super_block *dsb;
   130		unsigned int blkszbits;
   131		void *data;
   132		int ret;
   133	
   134		page = read_mapping_page(sb->s_bdev->bd_inode->i_mapping, 0, NULL);
   135		if (IS_ERR(page)) {
   136			erofs_err(sb, "cannot read erofs superblock");
   137			return PTR_ERR(page);
   138		}
   139	
   140		sbi = EROFS_SB(sb);
   141	
   142		data = kmap(page);
   143		dsb = (struct erofs_super_block *)(data + EROFS_SUPER_OFFSET);
   144	
   145		ret = -EINVAL;
   146		if (le32_to_cpu(dsb->magic) != EROFS_SUPER_MAGIC_V1) {
   147			erofs_err(sb, "cannot find valid erofs superblock");
   148			goto out;
   149		}
   150	
   151		sbi->feature_compat = le32_to_cpu(dsb->feature_compat);
   152		if (sbi->feature_compat & EROFS_FEATURE_COMPAT_SB_CHKSUM) {
   153			ret = erofs_superblock_csum_verify(sb, data);
   154			if (ret)
   155				goto out;
   156		}
   157	
   158		blkszbits = dsb->blkszbits;
   159		/* 9(512 bytes) + LOG_SECTORS_PER_BLOCK == LOG_BLOCK_SIZE */
   160		if (blkszbits != LOG_BLOCK_SIZE) {
   161			erofs_err(sb, "blkszbits %u isn't supported on this platform",
   162				  blkszbits);
   163			goto out;
   164		}
   165	
   166		if (!check_layout_compatibility(sb, dsb))
   167			goto out;
   168	
   169		sbi->blocks = le32_to_cpu(dsb->blocks);
   170		sbi->meta_blkaddr = le32_to_cpu(dsb->meta_blkaddr);
   171	#ifdef CONFIG_EROFS_FS_XATTR
   172		sbi->xattr_blkaddr = le32_to_cpu(dsb->xattr_blkaddr);
   173	#endif
   174		sbi->islotbits = ilog2(sizeof(struct erofs_inode_compact));
   175		sbi->root_nid = le16_to_cpu(dsb->root_nid);
   176		sbi->inos = le64_to_cpu(dsb->inos);
   177	
   178		sbi->build_time = le64_to_cpu(dsb->build_time);
   179		sbi->build_time_nsec = le32_to_cpu(dsb->build_time_nsec);
   180	
   181		memcpy(&sb->s_uuid, dsb->uuid, sizeof(dsb->uuid));
   182	
   183		ret = strscpy(sbi->volume_name, dsb->volume_name,
   184			      sizeof(dsb->volume_name));
   185		if (ret < 0) {	/* -E2BIG */
   186			erofs_err(sb, "bad volume name without NIL terminator");
   187			ret = -EFSCORRUPTED;
   188			goto out;
   189		}
   190	
 > 191		sbi->sync_decompress = false;
   192		/* parse on-disk compression configurations */
   193		z_erofs_load_lz4_config(sbi, dsb);
   194		ret = 0;
   195	out:
   196		kunmap(page);
   197		put_page(page);
   198		return ret;
   199	}
   200	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 20631 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linux-erofs/attachments/20210305/48d0a1a0/attachment.gz>


More information about the Linux-erofs mailing list