Re: Upcoming ABI Breakage in RELENG_7

Previous thread: [head tinderbox] failure on sparc64/sparc64 by FreeBSD Tinderbox on Tuesday, July 29, 2008 - 8:45 am. (1 message)

Next thread: [head tinderbox] failure on sparc64/sun4v by FreeBSD Tinderbox on Tuesday, July 29, 2008 - 8:46 am. (1 message)
From: Ken Smith
Date: Tuesday, July 29, 2008 - 8:45 am

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 |

From: David Southwell
Date: Wednesday, July 30, 2008 - 2:47 am

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"
From: Max Laier
Date: Wednesday, July 30, 2008 - 2:47 am

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"
From: Kostik Belousov
Date: Wednesday, July 30, 2008 - 2:55 am

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.
From: Vlad GALU
Date: Wednesday, July 30, 2008 - 2:36 am

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"
From: Ian FREISLICH
Date: Wednesday, July 30, 2008 - 7:27 am

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"
From: David Southwell
Date: Wednesday, July 30, 2008 - 7:55 am

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"
From: Ken Smith
Date: Wednesday, July 30, 2008 - 7:54 am

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.   |
 ...
From: Ian FREISLICH
Date: Wednesday, July 30, 2008 - 7:56 am

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"
From: Ed Schouten
Date: Wednesday, July 30, 2008 - 8:10 am

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/
From: Alfred Perlstein
Date: Friday, August 1, 2008 - 5:44 am

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"
From: Kostik Belousov
Date: Friday, August 1, 2008 - 5:50 am

MFCed as r181119. See the log for all details.
Previous thread: [head tinderbox] failure on sparc64/sparc64 by FreeBSD Tinderbox on Tuesday, July 29, 2008 - 8:45 am. (1 message)

Next thread: [head tinderbox] failure on sparc64/sun4v by FreeBSD Tinderbox on Tuesday, July 29, 2008 - 8:46 am. (1 message)