Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 06 Nov 2010 12:50:19 +0200
From:      Andriy Gapon <avg@freebsd.org>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        Josh Carroll <josh.carroll@gmail.com>, Rick Macklem <rmacklem@uoguelph.ca>, freebsd-stable@freebsd.org, jhb@freebsd.org
Subject:   Re: NFS deadlock (unkillable nfsd and no mounts work)
Message-ID:  <4CD532EB.1050008@freebsd.org>
In-Reply-To: <20101105212757.GG2392@deviant.kiev.zoral.com.ua>
References:  <AANLkTikHKAL4m_fHjnoJBwFkD7xwKpa92uHLkMzzvm2p@mail.gmail.com> <1984713101.142889.1288963447940.JavaMail.root@erie.cs.uoguelph.ca> <AANLkTi=_T5CcTrr%2BdMv90UpQr32=X=si5cNr_A0rua6X@mail.gmail.com> <20101105212757.GG2392@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CD532EB.1050008>