Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Jun 2012 10:59:27 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Benjamin Kaduk <bjk@freebsd.org>
Cc:        svn-src-head@freebsd.org, Rick Macklem <rmacklem@freebsd.org>, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r237244 - head/sys/fs/nfsclient
Message-ID:  <20120619075927.GO2337@deviant.kiev.zoral.com.ua>
In-Reply-To: <alpine.BSF.2.00.1206190246440.10495@freefall.freebsd.org>
References:  <201206182217.q5IMHTJE003928@svn.freebsd.org> <alpine.BSF.2.00.1206190246440.10495@freefall.freebsd.org>

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

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

On Tue, Jun 19, 2012 at 03:06:09AM +0000, Benjamin Kaduk wrote:
> On Mon, 18 Jun 2012, Rick Macklem wrote:
>=20
> >Author: rmacklem
> >Date: Mon Jun 18 22:17:28 2012
> >New Revision: 237244
> >URL: http://svn.freebsd.org/changeset/base/237244
> >
> >Log:
> > Fix the NFSv4 client for the case where mmap'd files are
> > written, but not msync'd by a process. A VOP_PUTPAGES()
> > called when VOP_RECLAIM() happens will usually fail, since
> > the NFSv4 Open has already been closed by VOP_INACTIVE().
> > Add a vm_object_page_clean() call to the NFSv4 client's
> > VOP_INACTIVE(), so that the write happens before the NFSv4
> > Open is closed. kib@ suggested using vgone() instead and
> > I will explore this, but this patch fixes things in the
>=20
> Hi Rick,
>=20
> OpenAFS is currently using vgone() in the vnode cleanup path (though it i=
s=20
> actually in RECLAIM not INACTIVE because of how AFS has traditionally=20
> separated the two).
Calling vgone() from VOP_RECLAIM is exactly NOP.

> However, it seems that the other *BSD implementations do not call vgone()=
=20
> in the same place, instead the corresponding flush functions call=20
> cache_purge() and sometimes other things.  My colleague is trying to get=
=20
> our FreeBSD implementation to match, so I would be interested in your tes=
t=20
> case to confirm that we do not rely on the full vgone() there.
>=20
> Thanks,
>=20
> Ben
>=20
> > meantime. For some reason, the VOP_PUTPAGES() is still
> > attaempted in VOP_RECLAIM(), but having this fail doesn't
> > cause any problems except a "stateid0 in write" being logged.

--JLgb/x5pnTX2rSUi
Content-Type: application/pgp-signature
Content-Disposition: inline

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

iEYEARECAAYFAk/gMV8ACgkQC3+MBN1Mb4h74wCdGoaluRfwe75F83VID8Go5NfN
KcgAn1Tsa1z7ipDa49FSUex0k8wjSKZ1
=RcIY
-----END PGP SIGNATURE-----

--JLgb/x5pnTX2rSUi--



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