[xiang-erofs:dev-test 5/5] fs/erofs/super.c:659:22: error: no member named 'off' in 'struct erofs_device_info'
kernel test robot
lkp at intel.com
Mon May 19 04:06:37 AEST 2025
tree: https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git dev-test
head: 7cd18799175c533c3f9b1c2b2cb6551e2a86c921
commit: 7cd18799175c533c3f9b1c2b2cb6551e2a86c921 [5/5] erofs: add 'fsoffset' mount option to specify filesystem offset
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20250519/202505190150.4HUHevyn-lkp@intel.com/config)
compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250519/202505190150.4HUHevyn-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505190150.4HUHevyn-lkp@intel.com/
All errors (new ones prefixed by >>):
>> fs/erofs/super.c:659:22: error: no member named 'off' in 'struct erofs_device_info'
659 | sbi->dif0.off, 1 << sbi->blkszbits);
| ~~~~~~~~~ ^
include/linux/fs_context.h:239:52: note: expanded from macro 'invalfc'
239 | #define invalfc(fc, fmt, ...) (errorfc(fc, fmt, ## __VA_ARGS__), -EINVAL)
| ^~~~~~~~~~~
include/linux/fs_context.h:227:65: note: expanded from macro 'errorfc'
227 | #define errorfc(fc, fmt, ...) __plog((&(fc)->log), 'e', fmt, ## __VA_ARGS__)
| ^~~~~~~~~~~
include/linux/fs_context.h:192:17: note: expanded from macro '__plog'
192 | l, fmt, ## __VA_ARGS__)
| ^~~~~~~~~~~
1 error generated.
vim +659 fs/erofs/super.c
602
603 static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc)
604 {
605 struct inode *inode;
606 struct erofs_sb_info *sbi = EROFS_SB(sb);
607 int err;
608
609 sb->s_magic = EROFS_SUPER_MAGIC;
610 sb->s_flags |= SB_RDONLY | SB_NOATIME;
611 sb->s_maxbytes = MAX_LFS_FILESIZE;
612 sb->s_op = &erofs_sops;
613
614 sbi->blkszbits = PAGE_SHIFT;
615 if (!sb->s_bdev) {
616 sb->s_blocksize = PAGE_SIZE;
617 sb->s_blocksize_bits = PAGE_SHIFT;
618
619 if (erofs_is_fscache_mode(sb)) {
620 err = erofs_fscache_register_fs(sb);
621 if (err)
622 return err;
623 }
624 err = super_setup_bdi(sb);
625 if (err)
626 return err;
627 } else {
628 if (!sb_set_blocksize(sb, PAGE_SIZE)) {
629 errorfc(fc, "failed to set initial blksize");
630 return -EINVAL;
631 }
632
633 sbi->dif0.dax_dev = fs_dax_get_by_bdev(sb->s_bdev,
634 &sbi->dif0.dax_part_off, NULL, NULL);
635 }
636
637 err = erofs_read_superblock(sb);
638 if (err)
639 return err;
640
641 if (sb->s_blocksize_bits != sbi->blkszbits) {
642 if (erofs_is_fscache_mode(sb)) {
643 errorfc(fc, "unsupported blksize for fscache mode");
644 return -EINVAL;
645 }
646
647 if (erofs_is_fileio_mode(sbi)) {
648 sb->s_blocksize = 1 << sbi->blkszbits;
649 sb->s_blocksize_bits = sbi->blkszbits;
650 } else if (!sb_set_blocksize(sb, 1 << sbi->blkszbits)) {
651 errorfc(fc, "failed to set erofs blksize");
652 return -EINVAL;
653 }
654 }
655
656 if (sbi->dif0.fsoff) {
657 if (sbi->dif0.fsoff & (sb->s_blocksize - 1))
658 return invalfc(fc, "fsoffset %llu is not aligned to block size %u",
> 659 sbi->dif0.off, 1 << sbi->blkszbits);
660 if (erofs_is_fscache_mode(sb))
661 return invalfc(fc, "cannot use fsoffset in fscache mode");
662 }
663
664 if (test_opt(&sbi->opt, DAX_ALWAYS)) {
665 if (!sbi->dif0.dax_dev) {
666 errorfc(fc, "DAX unsupported by block device. Turning off DAX.");
667 clear_opt(&sbi->opt, DAX_ALWAYS);
668 } else if (sbi->blkszbits != PAGE_SHIFT) {
669 errorfc(fc, "unsupported blocksize for DAX");
670 clear_opt(&sbi->opt, DAX_ALWAYS);
671 }
672 }
673
674 sb->s_time_gran = 1;
675 sb->s_xattr = erofs_xattr_handlers;
676 sb->s_export_op = &erofs_export_ops;
677
678 if (test_opt(&sbi->opt, POSIX_ACL))
679 sb->s_flags |= SB_POSIXACL;
680 else
681 sb->s_flags &= ~SB_POSIXACL;
682
683 err = z_erofs_init_super(sb);
684 if (err)
685 return err;
686
687 if (erofs_sb_has_fragments(sbi) && sbi->packed_nid) {
688 inode = erofs_iget(sb, sbi->packed_nid);
689 if (IS_ERR(inode))
690 return PTR_ERR(inode);
691 sbi->packed_inode = inode;
692 }
693
694 inode = erofs_iget(sb, sbi->root_nid);
695 if (IS_ERR(inode))
696 return PTR_ERR(inode);
697
698 if (!S_ISDIR(inode->i_mode)) {
699 erofs_err(sb, "rootino(nid %llu) is not a directory(i_mode %o)",
700 sbi->root_nid, inode->i_mode);
701 iput(inode);
702 return -EINVAL;
703 }
704 sb->s_root = d_make_root(inode);
705 if (!sb->s_root)
706 return -ENOMEM;
707
708 erofs_shrinker_register(sb);
709 err = erofs_xattr_prefixes_init(sb);
710 if (err)
711 return err;
712
713 erofs_set_sysfs_name(sb);
714 err = erofs_register_sysfs(sb);
715 if (err)
716 return err;
717
718 erofs_info(sb, "mounted with root inode @ nid %llu.", sbi->root_nid);
719 return 0;
720 }
721
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the Linux-erofs
mailing list