Hi,
quoted
quoted
It seems more fixes are needed.
I think the problem is that the submount doesn't appear in /proc/mounts.
"nfsd_fh()" in nfs-utils needs to be able to map from the uuid for a
filesystem to the mount point. To do this it walks through /proc/mounts
checking the uuid of each filesystem. If a filesystem isn't listed
there, it obviously fails.
I guess you could add code to nfs-utils to do whatever "btrfs subvol
list" does to make up for the fact that btrfs doesn't register in
/proc/mounts.
Another approach might be to just change svcxdr_encode_fattr3() and
nfsd4_encode_fattr() in the 'FSIDSOJURCE_UUID' case to check if
dentry->d_inode has a different btrfs volume id to
exp->ex_path.dentry->d_inode.
If it does, then mix the volume id into the fsid somehow.
With that, you wouldn't want the first change I suggested.
This is what I have done. and it is based on linux 5.10.44
but it still not work, so still more jobs needed.
Best Regards
Wang Yugui (wangyugui@e16-tech.com)
2021/06/21