On Wednesday, March 18, 2015 12:28:07 PM Adrian Chadd wrote: > On 18 March 2015 at 08:23, John Baldwin <j...@freebsd.org> wrote: > > On Wednesday, March 18, 2015 11:19:21 AM Ryan Stone wrote: > >> On Wed, Mar 18, 2015 at 10:24 AM, John Baldwin <j...@freebsd.org> wrote: > >> > >> > I do think the normal zone callbacks passed to uma_zcreate() are too > >> > public > >> > to change. Or at least, you would need to do some crazy ABI shim where > >> > you > >> > have a uma_zcreate_new() that you map to uma_zcreate() via a #define for > >> > the API, but include a legacy uma_zcreate() symbol that older modules can > >> > call (and then somehow tag the old function pointers via an internal flag > >> > in the zone and patch UMA to cast to the old function signatures for > >> > zones > >> > with that flag). > >> > > >> > >> I really wasn't clear here. I definitely don't think that changing the > >> ctor, etc to accept a size_t is MFC'able, and I don't think that the > >> problem (which is really only theoretical at this point) warrants an MFC to > >> -stable. I was talking about potentially doing it in a separate commit to > >> head, but that does leave -stable and head with a different API. This can > >> be painful for downstream consumers to deal with, which is why I wanted > >> comments. > > > > I actually think the API change to fix the zone callbacks is fine to change > > in HEAD. I don't think that is too disruptive for folks who might be > > sharing code across branches (they can use a local typedef to work around > > it or some such). > > +1. This isn't exposed to userland, right? So I wouldn't worry about. > > Kernel progress can't be held back because we're afraid of kernel ABI > changes that fix actual bugs.
I think that's a bit too cavalier. Just because it fixes a bug doesn't mean we don't care about the ABI implications in general. (That is, I think your blanket implication that it's ok to break the kernel ABI at anytime if the change fixes a bug is wrong.) It is possible to fix bugs while preserving the ABI, it just requires more work. Our ABI constraints are not just for userland, we do also try to preserve the ABI of a subset of kernel symbols as well (mostly those used by device drivers). The stickler though is which symbols fall into that category since the line for the kernel is much fuzzier than for userland. In general I would err on the side of caution and provide shims if they are feasible. I do think that the uma_alloc case is obscure enough to not be one we care about for ABI compat. I couldn't find the bpf example I was thinking of earlier, but this commit includes the shim method I described previously to preserve the ABI for old modules while fixing the API for new ones (and this was to fix a bug): https://svnweb.freebsd.org/base?view=revision&revision=196006 -- John Baldwin _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"