Date: Fri, 30 Jul 1999 00:12:04 -0700 From: David Greenman <dg@root.com> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: Bill Paul <wpaul@skynet.ctr.columbia.edu>, peter@netplex.com.au, crossd@cs.rpi.edu, current@FreeBSD.ORG Subject: Re: readdirplus client side fix (was Re: IRIX 6.5.4 NFS v3 TCP client + FreeBSD server = bewm) Message-ID: <199907300712.AAA12928@implode.root.com> In-Reply-To: Your message of "Thu, 29 Jul 1999 20:31:38 PDT." <199907300331.UAA81350@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> Look up a bit in the code. If bigenough is not true, cnp does not > get initialized. This could lead to the bogus length -- or rather, > it would be the cnp that is bogus, not the 'len'. > > The question is how to fix it. I think we can safely avoid doing the > cache_enter so try changing the 'if (doit)' to 'if (doit && bigenough)'. > I've included the patch below. ... > In order to accomplish this, the underlying vnode representing each > directory entry is retrieved and locked. However, there is a special > case: We *already* have a reference on the directory vnode itself, > and one of the directory entries, ".", will be the same vnode. Our > reference vnode, vp is *NOT* locked. In fact, we *can't* lock it > without creating a potential deadlock situation (at least that is my > take). I good bit of detective work...excellent job. -DG David Greenman Co-founder/Principal Architect, The FreeBSD Project - http://www.freebsd.org Creator of high-performance Internet servers - http://www.terasolutions.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199907300712.AAA12928>