change in VFS layer API?

K. Macy kmacy at freebsd.org
Fri Oct 24 17:18:37 UTC 2014


On Fri, Oct 24, 2014 at 9:45 AM, Julian Elischer <julian at 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


More information about the freebsd-fs mailing list