Date: Sat, 25 Oct 2014 10:47:00 +0800 From: Julian Elischer <julian@freebsd.org> To: "K. Macy" <kmacy@freebsd.org> Cc: "freebsd-fs@FreeBSD.org" <fs@freebsd.org> Subject: Re: change in VFS layer API? Message-ID: <544B0F24.4060500@freebsd.org> In-Reply-To: <CAHM0Q_P9ZfdbBCPtzbmmOPTt9CNtD9yfpFwkgwABjJXqb1=p1A@mail.gmail.com> References: <544A823A.1080304@freebsd.org> <CAHM0Q_P9ZfdbBCPtzbmmOPTt9CNtD9yfpFwkgwABjJXqb1=p1A@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 10/25/14, 1:18 AM, K. Macy wrote: > On Fri, Oct 24, 2014 at 9:45 AM, Julian Elischer <julian@freebsd.org> wrote: >> Can anyone point me at a VFS API contract change that occurred over the last >> 5 years where a filesystem written to teh old contract would end up with >> extra references to all its vnodes/objects? Specifically a proprietary >> filesystem that ran on 8.0 now can be compiled but ends up with extra >> references on its vnodes and can not free them. >> > I think the contract for some functions has become unclear. I've found > that the opensolaris' compatibility layer traverse' vput of the > initial vnode passed in triggers negative reference count panics. It > is clear that some callers of lookup expect the reference to be > maintained on error so the unconditional vput was (well is - this > patch isn't in base) wrong, but in the case of success it isn't clear. > Doing the vput on success will still eventually (as in a few seconds > of this torture test script) cause a negative reference count panic. I > think there needs to be an audit of VFS function contract compliance. > Preferably by someone who knows what they are. I can only infer from > cumulative context. I have evidence that the API has actually changed somehow. The old API would have extra calls to remove references to nodes. We don't seem to be seeing those extra calls any more. I'll have more info later. > Thanks. > > -K > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?544B0F24.4060500>