Normally the FreeBSD Project tries very hard to avoid ABI breakage in
"Stable Branches". However occasionally the fix for a bug can not be
implemented without ABI breakage, and it is decided that the fix
warrants the impact of the ABI breakage. We have one of those
situations coming along for RELENG_7 (what will become FreeBSD 7.1).
The ABI breakage should only impact kernel modules that are not part of
the baseline system (those will be patched by the MFC) which deal with
advisory locks. As such the impact should not cause many people
problems.
The work that will be MFCed fixes issues with filesystem advisory locks,
and moves the advisory locks list from filesystem-private data
structures into the vnode structure.
The MFC will be done by Kostantin Belousov some time this coming Friday
(August 1st, 2008) if you have concerns and want to watch for it.
Thanks.
--=20
Ken Smith
- From there to here, from here to | kensmith@cse.buffalo.edu
there, funny things are everywhere. |
- Theodore Geisel |
Sometimes information gets posted to this list on the assumption that everyone understand what the writer means. This is one of those occasions!! For those of us who are not as well informed and experienced as others could someone please explain what is meant by an ABI breakage, its implications and how to deal with them. Thanks David _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
An Application Binary Interface (ABI) breakage means a change of a complex datatype, or a function prototype - in C usually the change of a struct in size or field sort order. This change will effect all consumers of this Interface unless they are recompiled with the changed header files to also use the new interface. The impact depends greatly on the interface that is being changed. As Ken described in the initial mail this change is in the filesystem/vnode layer interface and thus will (only) concern consumers of that ABI. The changed interface is also a kernel-only interface - that means that only 3rd party kernel modules will be affected. I personally don't know of any 3rd party modules that muck about with filesystems (for which you can't get the source). That said, you might have to rebuild stuff like fuse after the breakage has happened. I assume that port maintainers of affected (kernel module) ports will bump the port revision after the change to give you/portupgrade a hint. -- /"\ Best regards, | mlaier@freebsd.org \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | mlaier@EFnet / \ ASCII Ribbon Campaign | Against HTML Mail and News _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
The small glitch in the announcement is use of the ABI =3D=3D Application Binary Interface term, that is better be replaced by KBI =3D=3D Kernel Bina= ry Interface. No usermode breakage is expected to result from MFC. The only consequence is the need to adopt some out-of-tree filesystems, not that I am aware of any ATM. If you are the author or maintainer of such module, then you need to watch this out.
ABI breakage occurs when internal data structures change (for instance, when members of the structure are removed or added). Kernel modules which expect those structures to look in a certain way will need to be recompiled. Also, depending on what data structures suffer the changes, ioctl() operations may fail, requiring a rebuild of the userland programs which issue the ioctl()s. And I'm sure that there are many other examples that I can't think of right now :) -- ~/.signature: no such file or directory _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Within a major release, the project tries very hard to maintain Binary Interface campatibility, or stability. In fact as far as I know, this is where the name "Stable Branch" originates. What this means is that a binary compiled on 7.0-RELEASE should continue to work without needing to be recompiled over the lifetime of the 7 branch. ABI breakage that Ken refers to here means that a change required to fix a bug cannot be made while maintaining binary compatibility with previous versions. Any program that makes use of (I'm guessing) fcntl(2) or flock(2) that runs on 7.0, will not run on >= 7.1 without being recompiled. Ian -- Ian Freislich _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Thanks that is very concise and very helpful. Question is what is the best way to determine which programs (if any) depend upon fcntl or flock on a running system? David _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Actually not quite, and that's why Konstantin mentioned I made a slight
mistake in my original announcement. ABI stands for *Application*
Binary Interface but (sorry) that's not quite what is being broken here.
It is a KBI (Kernel Binary Interface) that's being broken.
The difference is that the data structures being changed are strictly
internal to the kernel. Back in the days of "strictly monolithic
kernels" when the only way to get something into the kernel was to
rebuild the whole kernel and reboot with it this sort of thing was less
of a concern. But now that "kernel modules" can be loaded while the
machine is up and running we need to be a bit more careful about
announcing when a very important kernel data structure gets modified in
such a way that already-compiled modules might not be compatible because
of, as someone else mentioned, that very important data structure
changing in size or the elements inside that structure changing
position.
So because this is a KBI being broken it should NOT have any impact on
user-level executable files. It should only impact loadable kernel
modules that deal with filesystems.
IF this change did indeed change user-level programs to the degree
mentioned above that would "raise the bar" *dramatically* on whether we
would consider the fix worth the fall-out that would occur. Frankly I
No need to. :-)
But one way to do it if you ever needed to is with nm(1), something
like:
nm file | grep fcntl
though that would only tell you if that executable directly calls
fcntl(2) itself (functions inside libraries may wind up calling fcntl(2)
so if you really needed to be thorough you would need to also check the
libraries the executable is linked against, ldd(1) can help you figure
out what those are). There are likely better/easier ways to do it.
--=20
Ken Smith
- From there to here, from here to | kensmith@cse.buffalo.edu
there, funny things are everywhere. |
...That will be just about anything that opens and locks files. RDBMS, editors, browsers, MTAs spring to mind. This of course depends on my initial guess being correct. Ian -- Ian Freislich _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Are you sure? I fcntl(2) and flock(2) will not change. Only some kernel space bits will. --=20 Ed Schouten <ed@80386.nl> WWW: http://80386.nl/
Ken, Can you point at a cvs/svn log or two that details the change and why? Everyone else: For those confused about what ABI breakage means: It means that you'll need to recompile your kernel modules and potentially your system utilities that access kernel data structures to display statistics. It seems like in this particular case you won't need to recompile, but it's a good idea just to be safe to recompile kernel, world and any third party kernel modules you have. thank you, -Alfred _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
MFCed as r181119. See the log for all details.
