On Tue, Sep 9, 2014 at 12:37 PM, Gleb Smirnoff <gleb...@freebsd.org> wrote:
> On Tue, Sep 09, 2014 at 12:13:42PM +0200, Luigi Rizzo wrote:
> L> svn 270870 removed all the if_*spare fields in struct ifnet.
> L> They are replaced with the following comment
> L> /*
> L> * Spare fields to be added before branching a stable branch, so
> L> * that structure can be enhanced without changing the kernel
> L> * binary interface.
> L> */
> L> which leaves me a bit unhappy.
> L> Having a stable ABI is useful not only for stable branches,
> L> but also (I would say even more) with head, so people can
> L> run experimental code with limited modifications to the sources.
> L> Cases in point:
> L> - we used one spare field extensively when experimenting
> L> with netmap, and being able to just build a module without having
> L> to recompile the whole kernel was a big win.
> L> - we are developing some software GSO and again it was great to have
> L> the spares in the tcpcb and in the ifnet so we could limit
> L> modifications to headers used by multiple sources.
> L> I would kindly suggest to put the spares back.
> L> I can't see how they can possibly harm.
> The harm is obvious: someone commits code that _uses_ spare field
> without assigning it a new name. Spare field is a placeholder. Of
> course you can use it while you experiment. However, I don't see
> problem with patching your source tree where you experiment.
The problem with _not_ having spares is that you have to recompile
everything after patching the headers. With the spares, i could
make netmap a simple add-on kernel module with no dependencies.
Same on linux for what matters (there wasn't a spare there, but
nobody used ax25 and i could check and reuse it).
Of course you can easily emulate extension fields for stuff that
is not accessed frequently (tough a version number would help),
but there are cases when you do need the extra info on a per-packet
> The ABI plan for 'struct ifnet' is that the struct becomes
> opaque for device drivers. So its size and alignment no longer
> matters. Those who want to add new fields to struct ifnet,
> would also need to add accessor methods. Bits of this plan
> are already committed by Marcel, but its only first step.
spare fields <-> spare accessors
> I'm afraid that if fields are there back, the situation that
> happened with netmap (use of spare field) would repeat.
the spare pointer used by netmap was clearly indicated by a comment,
and giving it a dedicated name instead of if_pspare was
expected to happen (hopefully together with a __FreeBSD_version bump,
which has not happened).
I am not worried that the name change was missed when deleting if_pspare.
Mistakes happen and the error was promptly corrected (apart from the
What worries me is losing some flexibility in dealing with
out-of-tree kernel modules.
firstname.lastname@example.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"