[PATCH] Better handling of stale filehandles in open() in the NFS client

Rick Macklem rmacklem at uoguelph.ca
Fri May 21 00:29:55 UTC 2010



On Thu, 20 May 2010, John Baldwin wrote:

>
> It doesn't change the RPC count because of changes that Mohan added to the
> NFS client a while ago so that nfs_open() doesn't invalide the attribute
> cache during nfs_open() if it was already updated via nfs_lookup() during
> the same system call.  With Mohan's changes in place, all this change does
> is move the GETATTR/ACCESS RPC earlier in the case of a namecache hit.
>
Well, it sounds like a good theory. Something like:
- VOP_LOOKUP() locks the vnode, which is then passed to VOP_OPEN() and
   since it is locked, other threads can't perform VOPs on the vp.

I ran a single pass of a kernel "make cleandepend; make depend; make"
here (1 without the patch and one with the patch). Now, it could be
random variation, but since the other RPC counts changed by < 1%, I
suspect not. (I'll run another pass of each to see how much variation
I see w.r.t. Getattr.)

Here's the counts for the 5 RPCs I think might be interesting:
RPC		Count without patch	Count with patch
Getattr		590936			625987		+5.9%
Lookup		157194			157528
Access		59040			59690		+1.1%
Read		70585			70586
Write		112531			112530

I let you know what another pass of each gives, but it looks like
it has caused an increase in RPC cnts. I don't know if the increase
is enough to deter adding the patch, but it might be worth exploring
it more?

rick



More information about the freebsd-fs mailing list