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-mor...
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/e99ff00e4055532e35c592b50809761d8...
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 <lkp(a)intel.com>
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