NFS deadlock (unkillable nfsd and no mounts work)
Andriy Gapon
avg at freebsd.org
Sat Nov 6 10:50:25 UTC 2010
on 05/11/2010 23:27 Kostik Belousov said the following:
> I agree that the fix a right fix for real issue. It should only
> affect the filesystems that do support VFS_VGET(). In other words,
> it is relevant for e.g. UFS exports, but not for ZFS, that is the
> Andrey case.
Actually ZFS does implement vfs_vget, but with a special quirk for .zfs/ and
stuff under it:
static int
zfs_vget(vfs_t *vfsp, ino_t ino, int flags, vnode_t **vpp)
{
zfsvfs_t *zfsvfs = vfsp->vfs_data;
znode_t *zp;
int err;
/*
* zfs_zget() can't operate on virtual entires like .zfs/ or
* .zfs/snapshot/ directories, that's why we return EOPNOTSUPP.
* This will make NFS to switch to LOOKUP instead of using VGET.
*/
if (ino == ZFSCTL_INO_ROOT || ino == ZFSCTL_INO_SNAPDIR)
return (EOPNOTSUPP);
...
...
--
Andriy Gapon
More information about the freebsd-stable
mailing list