Hi Chao,
[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on f2fs/dev-test]
[also build test ERROR on next-20191031]
[cannot apply to v5.4-rc5]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see
https://stackoverflow.com/a/37406982]
url:
https://github.com/0day-ci/linux/commits/Chao-Yu/f2fs-support-data-compre...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev-test
config: x86_64-randconfig-e001-201943 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
fs/f2fs/inode.c: In function 'do_read_inode':
> fs/f2fs/inode.c:448:2: error: implicit declaration of function
'stat_add_compr_blocks'; did you mean 'stat_inc_compr_blocks'?
[-Werror=implicit-function-declaration]
stat_add_compr_blocks(inode,
F2FS_I(inode)->i_compressed_blocks);
^~~~~~~~~~~~~~~~~~~~~
stat_inc_compr_blocks
fs/f2fs/inode.c: In function 'f2fs_evict_inode':
> fs/f2fs/inode.c:756:2: error: implicit declaration of function
'stat_sub_compr_blocks'; did you mean 'stat_inc_compr_blocks'?
[-Werror=implicit-function-declaration]
stat_sub_compr_blocks(inode,
F2FS_I(inode)->i_compressed_blocks);
^~~~~~~~~~~~~~~~~~~~~
stat_inc_compr_blocks
Cyclomatic Complexity 5 include/linux/compiler.h:__read_once_size
Cyclomatic Complexity 1 include/linux/kasan-checks.h:kasan_check_read
Cyclomatic Complexity 1 include/linux/kasan-checks.h:kasan_check_write
Cyclomatic Complexity 2 arch/x86/include/asm/bitops.h:arch_set_bit
Cyclomatic Complexity 2 arch/x86/include/asm/bitops.h:arch_clear_bit
Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:constant_test_bit
Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:variable_test_bit
Cyclomatic Complexity 1 include/asm-generic/bitops-instrumented.h:set_bit
Cyclomatic Complexity 1 include/asm-generic/bitops-instrumented.h:clear_bit
Cyclomatic Complexity 3 include/linux/time64.h:timespec64_equal
Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:arch_atomic_read
Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:arch_atomic_dec_and_test
Cyclomatic Complexity 1 include/asm-generic/atomic-instrumented.h:atomic_read
Cyclomatic Complexity 1 include/asm-generic/atomic-instrumented.h:atomic_dec_and_test
Cyclomatic Complexity 1 include/linux/err.h:ERR_PTR
Cyclomatic Complexity 1 include/linux/err.h:PTR_ERR
Cyclomatic Complexity 3 include/linux/kdev_t.h:old_valid_dev
Cyclomatic Complexity 1 include/linux/kdev_t.h:old_encode_dev
Cyclomatic Complexity 1 include/linux/kdev_t.h:old_decode_dev
Cyclomatic Complexity 1 include/linux/kdev_t.h:new_encode_dev
Cyclomatic Complexity 1 include/linux/kdev_t.h:new_decode_dev
Cyclomatic Complexity 1 include/linux/uidgid.h:__kuid_val
Cyclomatic Complexity 1 include/linux/uidgid.h:__kgid_val
Cyclomatic Complexity 1 include/linux/uidgid.h:make_kuid
Cyclomatic Complexity 1 include/linux/uidgid.h:make_kgid
Cyclomatic Complexity 1 include/linux/uidgid.h:from_kuid
Cyclomatic Complexity 1 include/linux/uidgid.h:from_kgid
Cyclomatic Complexity 1 include/linux/page-flags.h:PageTail
Cyclomatic Complexity 3 include/linux/page-flags.h:PageCompound
Cyclomatic Complexity 1 include/linux/page-flags.h:PagePoisoned
Cyclomatic Complexity 1 include/linux/page-flags.h:PageLocked
Cyclomatic Complexity 1 include/linux/page-flags.h:ClearPageChecked
Cyclomatic Complexity 1 include/linux/projid.h:__kprojid_val
Cyclomatic Complexity 1 include/linux/projid.h:make_kprojid
Cyclomatic Complexity 1 include/linux/projid.h:from_kprojid
Cyclomatic Complexity 1 include/linux/fs.h:i_size_read
Cyclomatic Complexity 1 include/linux/fs.h:i_size_write
Cyclomatic Complexity 1 include/linux/fs.h:i_uid_read
Cyclomatic Complexity 1 include/linux/fs.h:i_gid_read
Cyclomatic Complexity 1 include/linux/fs.h:i_uid_write
Cyclomatic Complexity 1 include/linux/fs.h:i_gid_write
Cyclomatic Complexity 1 include/linux/page_ref.h:page_ref_count
Cyclomatic Complexity 1 include/linux/page_ref.h:page_ref_dec_and_test
Cyclomatic Complexity 1 include/linux/mm.h:put_devmap_managed_page
Cyclomatic Complexity 1 include/linux/mm.h:lowmem_page_address
Cyclomatic Complexity 1 include/linux/pagemap.h:mapping_set_gfp_mask
Cyclomatic Complexity 1 include/crypto/hash.h:crypto_shash_descsize
Cyclomatic Complexity 1 include/linux/fscrypt.h:fscrypt_put_encryption_info
Cyclomatic Complexity 1 include/linux/fsverity.h:fsverity_cleanup_inode
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:set_raw_extent
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:time_to_inject
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_I
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_SB
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_I_SB
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_CKPT
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_NODE
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_INODE
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:SM_I
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:SIT_I
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:FREE_I
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:NODE_MAPPING
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:set_sbi_flag
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:__is_set_ckpt_flags
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:is_set_ckpt_flags
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:F2FS_HAS_BLOCKS
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:get_pages
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:get_dirty_pages
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:get_blocktype_secs
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:IS_INODE
Cyclomatic Complexity 2 fs/f2fs/f2fs.h:offset_in_addr
Cyclomatic Complexity 8 fs/f2fs/f2fs.h:get_inline_info
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:is_file
Cyclomatic Complexity 5 fs/f2fs/f2fs.h:f2fs_is_time_consistent
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_cp_error
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:get_extra_isize
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:inline_data_addr
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:get_inline_xattr_addrs
Cyclomatic Complexity 2 fs/f2fs/f2fs.h:__is_valid_data_blkaddr
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_sb_has_extra_attr
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_sb_has_project_quota
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_sb_has_inode_chksum
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_sb_has_flexible_inline_xattr
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_sb_has_inode_crtime
Cyclomatic Complexity 1 fs/f2fs/f2fs.h:f2fs_sb_has_compression
Cyclomatic Complexity 1 fs/f2fs/node.h:ino_of_node
Cyclomatic Complexity 1 fs/f2fs/node.h:nid_of_node
Cyclomatic Complexity 1 fs/f2fs/node.h:is_node
Cyclomatic Complexity 1 fs/f2fs/node.h:clear_inline_node
Cyclomatic Complexity 2 fs/f2fs/node.h:set_cold_node
Cyclomatic Complexity 2 fs/f2fs/segment.h:CURSEG_I
Cyclomatic Complexity 1 fs/f2fs/segment.h:get_seg_entry
Cyclomatic Complexity 1 fs/f2fs/segment.h:reserved_segments
Cyclomatic Complexity 1 fs/f2fs/segment.h:free_sections
Cyclomatic Complexity 1 fs/f2fs/segment.h:reserved_sections
Cyclomatic Complexity 4 fs/f2fs/segment.h:has_curseg_enough_space
Cyclomatic Complexity 1 include/trace/events/f2fs.h:trace_f2fs_iget
Cyclomatic Complexity 1 include/trace/events/f2fs.h:trace_f2fs_iget_exit
vim +448 fs/f2fs/inode.c
305
306 static int do_read_inode(struct inode *inode)
307 {
308 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
309 struct f2fs_inode_info *fi = F2FS_I(inode);
310 struct page *node_page;
311 struct f2fs_inode *ri;
312 projid_t i_projid;
313 int err;
314
315 /* Check if ino is within scope */
316 if (f2fs_check_nid_range(sbi, inode->i_ino))
317 return -EINVAL;
318
319 node_page = f2fs_get_node_page(sbi, inode->i_ino);
320 if (IS_ERR(node_page))
321 return PTR_ERR(node_page);
322
323 ri = F2FS_INODE(node_page);
324
325 inode->i_mode = le16_to_cpu(ri->i_mode);
326 i_uid_write(inode, le32_to_cpu(ri->i_uid));
327 i_gid_write(inode, le32_to_cpu(ri->i_gid));
328 set_nlink(inode, le32_to_cpu(ri->i_links));
329 inode->i_size = le64_to_cpu(ri->i_size);
330 inode->i_blocks = SECTOR_FROM_BLOCK(le64_to_cpu(ri->i_blocks) - 1);
331
332 inode->i_atime.tv_sec = le64_to_cpu(ri->i_atime);
333 inode->i_ctime.tv_sec = le64_to_cpu(ri->i_ctime);
334 inode->i_mtime.tv_sec = le64_to_cpu(ri->i_mtime);
335 inode->i_atime.tv_nsec = le32_to_cpu(ri->i_atime_nsec);
336 inode->i_ctime.tv_nsec = le32_to_cpu(ri->i_ctime_nsec);
337 inode->i_mtime.tv_nsec = le32_to_cpu(ri->i_mtime_nsec);
338 inode->i_generation = le32_to_cpu(ri->i_generation);
339 if (S_ISDIR(inode->i_mode))
340 fi->i_current_depth = le32_to_cpu(ri->i_current_depth);
341 else if (S_ISREG(inode->i_mode))
342 fi->i_gc_failures[GC_FAILURE_PIN] =
343 le16_to_cpu(ri->i_gc_failures);
344 fi->i_xattr_nid = le32_to_cpu(ri->i_xattr_nid);
345 fi->i_flags = le32_to_cpu(ri->i_flags);
346 if (S_ISREG(inode->i_mode))
347 fi->i_flags &= ~F2FS_PROJINHERIT_FL;
348 fi->flags = 0;
349 fi->i_advise = ri->i_advise;
350 fi->i_pino = le32_to_cpu(ri->i_pino);
351 fi->i_dir_level = ri->i_dir_level;
352
353 if (f2fs_init_extent_tree(inode, &ri->i_ext))
354 set_page_dirty(node_page);
355
356 get_inline_info(inode, ri);
357
358 fi->i_extra_isize = f2fs_has_extra_attr(inode) ?
359 le16_to_cpu(ri->i_extra_isize) : 0;
360
361 if (f2fs_sb_has_flexible_inline_xattr(sbi)) {
362 fi->i_inline_xattr_size = le16_to_cpu(ri->i_inline_xattr_size);
363 } else if (f2fs_has_inline_xattr(inode) ||
364 f2fs_has_inline_dentry(inode)) {
365 fi->i_inline_xattr_size = DEFAULT_INLINE_XATTR_ADDRS;
366 } else {
367
368 /*
369 * Previous inline data or directory always reserved 200 bytes
370 * in inode layout, even if inline_xattr is disabled. In order
371 * to keep inline_dentry's structure for backward compatibility,
372 * we get the space back only from inline_data.
373 */
374 fi->i_inline_xattr_size = 0;
375 }
376
377 if (!sanity_check_inode(inode, node_page)) {
378 f2fs_put_page(node_page, 1);
379 return -EFSCORRUPTED;
380 }
381
382 /* check data exist */
383 if (f2fs_has_inline_data(inode) && !f2fs_exist_data(inode))
384 __recover_inline_status(inode, node_page);
385
386 /* try to recover cold bit for non-dir inode */
387 if (!S_ISDIR(inode->i_mode) && !is_cold_node(node_page)) {
388 set_cold_node(node_page, false);
389 set_page_dirty(node_page);
390 }
391
392 /* get rdev by using inline_info */
393 __get_inode_rdev(inode, ri);
394
395 if (S_ISREG(inode->i_mode)) {
396 err = __written_first_block(sbi, ri);
397 if (err < 0) {
398 f2fs_put_page(node_page, 1);
399 return err;
400 }
401 if (!err)
402 set_inode_flag(inode, FI_FIRST_BLOCK_WRITTEN);
403 }
404
405 if (!f2fs_need_inode_block_update(sbi, inode->i_ino))
406 fi->last_disk_size = inode->i_size;
407
408 if (fi->i_flags & F2FS_PROJINHERIT_FL)
409 set_inode_flag(inode, FI_PROJ_INHERIT);
410
411 if (f2fs_has_extra_attr(inode) && f2fs_sb_has_project_quota(sbi)
&&
412 F2FS_FITS_IN_INODE(ri, fi->i_extra_isize, i_projid))
413 i_projid = (projid_t)le32_to_cpu(ri->i_projid);
414 else
415 i_projid = F2FS_DEF_PROJID;
416 fi->i_projid = make_kprojid(&init_user_ns, i_projid);
417
418 if (f2fs_has_extra_attr(inode) && f2fs_sb_has_inode_crtime(sbi)
&&
419 F2FS_FITS_IN_INODE(ri, fi->i_extra_isize, i_crtime)) {
420 fi->i_crtime.tv_sec = le64_to_cpu(ri->i_crtime);
421 fi->i_crtime.tv_nsec = le32_to_cpu(ri->i_crtime_nsec);
422 }
423
424 if (f2fs_has_extra_attr(inode) && f2fs_sb_has_compression(sbi)) {
425 if (F2FS_FITS_IN_INODE(ri, fi->i_extra_isize,
426 i_log_cluster_size)) {
427 fi->i_compressed_blocks =
428 le64_to_cpu(ri->i_compressed_blocks);
429 fi->i_compress_algorithm = ri->i_compress_algorithm;
430 fi->i_log_cluster_size = ri->i_log_cluster_size;
431 fi->i_cluster_size = 1 << fi->i_log_cluster_size;
432 }
433
434 if ((fi->i_flags & F2FS_COMPR_FL) && f2fs_may_compress(inode))
435 set_inode_flag(inode, FI_COMPRESSED_FILE);
436 }
437
438 F2FS_I(inode)->i_disk_time[0] = inode->i_atime;
439 F2FS_I(inode)->i_disk_time[1] = inode->i_ctime;
440 F2FS_I(inode)->i_disk_time[2] = inode->i_mtime;
441 F2FS_I(inode)->i_disk_time[3] = F2FS_I(inode)->i_crtime;
442 f2fs_put_page(node_page, 1);
443
444 stat_inc_inline_xattr(inode);
445 stat_inc_inline_inode(inode);
446 stat_inc_inline_dir(inode);
447 stat_inc_compr_inode(inode);
448 stat_add_compr_blocks(inode,
F2FS_I(inode)->i_compressed_blocks);
449
450 return 0;
451 }
452
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation