svn commit: r244663 - stable/9
Robert Watson
rwatson at FreeBSD.org
Tue Dec 25 19:17:23 UTC 2012
On Tue, 25 Dec 2012, Konstantin Belousov wrote:
> On Mon, Dec 24, 2012 at 12:04:03PM -0800, Alfred Perlstein wrote:
>> On 12/24/12 11:24 AM, Adrian Chadd wrote:
>>> ... why'd we break the KBI in a stable branch?
>>>
>> I am not sure either.
>>
>> I think a single VOP for nullfs (while ugly) would have sufficed.
> No, it doesn't.
>
> Even if it would be sufficient, having a switch right after the vtable call
> is silly. But, ignoring the sillyness, having a single VOP forces a
> filesystem, needed to override the single bit of behaviour, to override all
> behaviours hidden from under the common VOP. Besides the incovenience, it
> breaks the bypass. This is why I did not went this route in the HEAD commit.
>
> Making HEAD and stable diverge for the VOP table is unmaintainable.
>
> At least one other change which cannot be covered by the VOP table hacking
> is the struct vfsops new method.
>
> Traditionally (my memory goes back to 6.x branch) we did not maintained VFS
> KBI stability on the branches.
While I would love to have a stable KBI, or even KPI, for VFS, past experience
suggests that we are not prepared to document one, let alone enforce it, and
that we frequently experience changes that disrupt both the binary and
programming interfaces -- often for very good reasons (e.g., fixing critical
bugs, improving performance, etc). And that the notional VFS KPI is extremely
promiscuous, being made up of not just the obvious VFS parts, but also VM
parts, etc. We've done a bit better with device drivers, where the consensus
is that we should Try Fairly Hard, but even there we have only limited
documentation of what even constitutes the KPI and KBI.
In the end, not all kernel interfaces can be "KPIs" or "KBIs" -- otherwise, we
could change almost nothing in -STABLE, causing branches to stagnate rapidly.
If you look at Apple's model (for example), they designate certain interfaces
as "API" or "KPI" rather than using the terms more casually to refer to any
interface in userspace or kernel, and we need to take the same perspective. A
few years ago, I took a gander through a number of core network stack data
structures used by device drivers, while trying to help resolve how TOE would
fit into the network device driver picture, and you can see the results here:
http://wiki.freebsd.org/NetKPIKBI
However, I didn't attempt to enumerate symbols, just data structures -- that
was in large part because the issue we faced at the time was changes
disrupting monitoring interfaces used by netstat (etc). If we do want to
chase this goal more formally, we should investigate tools to help us do that.
Robert
More information about the svn-src-stable-9
mailing list