Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 May 2011 12:20:11 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        FreeBSD FS <freebsd-fs@freebsd.org>
Subject:   Re: RFC: adding a lock flags argument to VFS_FHTOVP() for FreeBSD9
Message-ID:  <20110517092011.GK48734@deviant.kiev.zoral.com.ua>
In-Reply-To: <256284561.428250.1305590315172.JavaMail.root@erie.cs.uoguelph.ca>
References:  <256284561.428250.1305590315172.JavaMail.root@erie.cs.uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help

--tt/ITYRGFe52qw7n
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, May 16, 2011 at 07:58:35PM -0400, Rick Macklem wrote:
> Hi,
>=20
> Down the road, I would like the NFS server to be able to do a
>   VFS_FHTOVP(mp, &fhp->fh_fid, LK_SHARED, vpp);
> similar to what is already supported for VFS_VGET(). The reason
> is that, currently, when a client does read-aheads, these reads are
> basically serialized because the VFS_FHTOVP() gets an LK_EXCLUSIVE
> locked vnode for each RPC on the server.
>=20
> Like VFS_VGET(), the underlying file system can still choose to
> return a LK_EXCLUSIVE locked vnode even when LK_SHARED is specified.
> (Some file systems, such as FFS, just call VFS_VGET() in VFS_FHTOVP(),
>  so all that happens is that the flag is passed through to VFS_VGET()
>  for those ones.)
Yes, the flag to specify the locking mode does only specify the minimal
locking requirements, and filesystem is allowed to upgrade it to the
more strict lock type. E.g. UFS would only return shared lock if the
vnode was found in hash, AFAIR. If not told otherwise, getnewvnode(9)
forces lockmgr to convert all lock requests into exclusive.

>=20
> To minimize the risk of the patch breaking something, I have it setting
> LK_EXCLUSIVE for all VFS_FHTOVP() calls so that the semantics don't
> actually change. (Changing the NFS server to use LK_SHARED is a trivial
> patch, but will need extensive testing, so I'm not planning on that
> change for 9.0.)
>=20
> If you are interested, my current patch is at:
>   http://people.freebsd.org/~rmacklem/fhtovp.patch
>=20
> So, does this sound like a reasonable thing to commit, once the patch
> is reviewed?
Sure, please do it before the code slush.

--tt/ITYRGFe52qw7n
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iEYEARECAAYFAk3SPcoACgkQC3+MBN1Mb4iLDgCgzybKN06HfY7h5tMg2BxX+iVh
KLkAnij6Gjq5oy6+vRqQHO4ZOwHWKpBC
=O73t
-----END PGP SIGNATURE-----

--tt/ITYRGFe52qw7n--



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