Hi NeilBrown, Thank you for the patch! Yet something to improve: [auto build test ERROR on nfs/linux-next] [also build test ERROR on hch-configfs/for-next linus/master v5.14-rc7 next-20210820] [cannot apply to kdave/for-next] [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/NeilBrown/BTRFS-NFSD-provide-more-unique-inode-number-for-btrfs-export/20210823-120718 base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next config: hexagon-randconfig-r045-20210822 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 79b55e5038324e61a3abf4e6a9a949c473edd858) 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/e99ff00e4055532e35c592b50809761d82f87595 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review NeilBrown/BTRFS-NFSD-provide-more-unique-inode-number-for-btrfs-export/20210823-120718 git checkout e99ff00e4055532e35c592b50809761d82f87595 # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=hexagon SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> fs/nfsd/nfsfh.c:593:44: error: use of undeclared identifier 'BTRFS_SUPER_MAGIC' if (exp->ex_path.mnt->mnt_sb->s_magic == BTRFS_SUPER_MAGIC) ^ >> fs/nfsd/nfsfh.c:593:44: error: use of undeclared identifier 'BTRFS_SUPER_MAGIC' >> fs/nfsd/nfsfh.c:593:44: error: use of undeclared identifier 'BTRFS_SUPER_MAGIC' 3 errors generated. vim +/BTRFS_SUPER_MAGIC +593 fs/nfsd/nfsfh.c 557 558 __be32 559 fh_compose(struct svc_fh *fhp, struct svc_export *exp, struct dentry *dentry, 560 struct svc_fh *ref_fh) 561 { 562 /* ref_fh is a reference file handle. 563 * if it is non-null and for the same filesystem, then we should compose 564 * a filehandle which is of the same version, where possible. 565 * Currently, that means that if ref_fh->fh_handle.fh_version == 0xca 566 * Then create a 32byte filehandle using nfs_fhbase_old 567 * 568 */ 569 570 struct inode * inode = d_inode(dentry); 571 dev_t ex_dev = exp_sb(exp)->s_dev; 572 u8 options = 0; 573 574 dprintk("nfsd: fh_compose(exp %02x:%02x/%ld %pd2, ino=%ld)\n", 575 MAJOR(ex_dev), MINOR(ex_dev), 576 (long) d_inode(exp->ex_path.dentry)->i_ino, 577 dentry, 578 (inode ? inode->i_ino : 0)); 579 580 /* Choose filehandle version and fsid type based on 581 * the reference filehandle (if it is in the same export) 582 * or the export options. 583 */ 584 set_version_and_fsid_type(fhp, exp, ref_fh); 585 586 /* If we have a ref_fh, then copy the fh_no_wcc setting from it. */ 587 fhp->fh_no_wcc = ref_fh ? ref_fh->fh_no_wcc : false; 588 589 if (ref_fh && ref_fh->fh_export == exp) { 590 options = ref_fh->fh_handle.fh_options; 591 } else { 592 /* Set options as needed */ > 593 if (exp->ex_path.mnt->mnt_sb->s_magic == BTRFS_SUPER_MAGIC) 594 options |= NFSD_FH_OPTION_INO_UNIQUIFY; 595 } 596 597 if (ref_fh == fhp) 598 fh_put(ref_fh); 599 600 if (fhp->fh_locked || fhp->fh_dentry) { 601 printk(KERN_ERR "fh_compose: fh %pd2 not initialized!\n", 602 dentry); 603 } 604 if (fhp->fh_maxsize < NFS_FHSIZE) 605 printk(KERN_ERR "fh_compose: called with maxsize %d! %pd2\n", 606 fhp->fh_maxsize, 607 dentry); 608 609 fhp->fh_dentry = dget(dentry); /* our internal copy */ 610 fhp->fh_export = exp_get(exp); 611 612 if (fhp->fh_handle.fh_version == 0xca) { 613 /* old style filehandle please */ 614 memset(&fhp->fh_handle.fh_base, 0, NFS_FHSIZE); 615 fhp->fh_handle.fh_size = NFS_FHSIZE; 616 fhp->fh_handle.ofh_dcookie = 0xfeebbaca; 617 fhp->fh_handle.ofh_dev = old_encode_dev(ex_dev); 618 fhp->fh_handle.ofh_xdev = fhp->fh_handle.ofh_dev; 619 fhp->fh_handle.ofh_xino = 620 ino_t_to_u32(d_inode(exp->ex_path.dentry)->i_ino); 621 fhp->fh_handle.ofh_dirino = ino_t_to_u32(parent_ino(dentry)); 622 if (inode) 623 _fh_update_old(dentry, exp, &fhp->fh_handle); 624 } else { 625 fhp->fh_handle.fh_size = 626 key_len(fhp->fh_handle.fh_fsid_type) + 4; 627 fhp->fh_handle.fh_options = options; 628 629 mk_fsid(fhp->fh_handle.fh_fsid_type, 630 fhp->fh_handle.fh_fsid, 631 ex_dev, 632 d_inode(exp->ex_path.dentry)->i_ino, 633 exp->ex_fsid, exp->ex_uuid); 634 635 if (inode) 636 _fh_update(fhp, exp, dentry); 637 if (fhp->fh_handle.fh_fileid_type == FILEID_INVALID) { 638 fh_put(fhp); 639 return nfserr_opnotsupp; 640 } 641 } 642 643 return 0; 644 } 645 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org