qio: clean up block_.*_metadata()
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 6 Jun 2019 13:36:01 +0000 (09:36 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 6 Jun 2019 13:44:10 +0000 (09:44 -0400)
commit6627be2d494a454696960a32885e102efe084aa8
treec723a5cde1c358d66e9f3e451512217b9e567280
parent2148a156957afca5549afa52a91effeb58d43e63
qio: clean up block_.*_metadata()

We were missing the free() function pointer.  No one was using that, but
if you padblocked a block from udp, where they override free(), the
block wouldn't have the same method.  Same goes for linearizeblock().

The 'next' pointer was a subject of concern, especially given the
occasional confusion between blocks and blocklists.  If you are copying
the metadata to a new block, that's often because you are either freeing
the old block, in which case a lost next pointer is a leak, or you are
'teeing' traffic, in which case you have two blocks with the same next
pointer (disaster).

The other fields seem to be taken care of by their callers: extra data,
rp/wp/lim/etc.  'list' is used by callers like ARP to have their own
lists.  Not sure if they can double-up on 'next' or not.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/ns/allocb.c