Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Oct 2014 10:18:35 -0700
From:      "K. Macy" <kmacy@freebsd.org>
To:        Julian Elischer <julian@freebsd.org>
Cc:        "freebsd-fs@FreeBSD.org" <fs@freebsd.org>
Subject:   Re: change in VFS layer API?
Message-ID:  <CAHM0Q_P9ZfdbBCPtzbmmOPTt9CNtD9yfpFwkgwABjJXqb1=p1A@mail.gmail.com>
In-Reply-To: <544A823A.1080304@freebsd.org>
References:  <544A823A.1080304@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

Thanks.

-K



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