Hi. Currently we have two VFS methods: vfs_vptofh, which translates vnode to NFS file handle and vfs_fhtovp, which translates NFS file handle to vnode. Unfortunately this allows to support only one type of structure stored in v_data (without some nasty magic). That's why I'd like to move vptofh operations from VFS operations to VOP operations. By doing this I can use different vop_vptofh operation for different kinds of vnodes. In Solaris it is already done that way - we have vfs 'vget' method which does file-handle-to-vnode translation and vnode 'fid' method, which does vnode-to-file-handle translation. I need this functionality for ZFS, but it seems to be logical move in general - VFS_VPTOFH() macro takes vnode pointer as its first argument, not mount pointer as the other VFS_*() macros, so it looks like it should be a VOP in the first place. One of the possibilities was to introduce vop_vptofh method, but leave vfs_vptofh method as it is and don't touch existing file systems, but let's do it right and convert all existing file systems from the base system to use vop_vptofh. Unfortunately touching all file systems is risky, even if the change is easy and I can't test all file systems by myself. The patch is compile-tested and I also tested exporting UFS, MSDOSFS, CD9660, NULLFS and ZFS over NFS with this change and it seems to work (FreeBSD as NFS server and FreeBSD and Solaris as NFS clients). I'd like to ask for testing file systems below: HPFS NTFS UDF UnionFS EXT2FS ReiserFS XFS You would need to export the file system over NFS _before_patching_the_kernel_, mount it over NFS (even locally) and run something like 'find /path/to/fs/ -print0 | xargs ls -ld'. If it works, you need to patch the kernel, recompile it, try the same operations and report the results (also success stories). The patch can be downloaded from here: http://people.freebsd.org/~pjd/patches/vptofh.patch You apply the patch from /sys/ directory: # cd /sys/ # patch < /path/to/vptofh.patch Thank you very much in advance! -- Pawel Jakub Dawidek http://www.wheel.pl pjd_at_FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am!
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:05 UTC