Make pullblock() and trimblock() aware of extra data
authorAndrew Gallatin <gallatin@google.com>
Thu, 24 Jul 2014 13:50:57 +0000 (06:50 -0700)
committerAndrew Gallatin <gallatin@google.com>
Thu, 24 Jul 2014 13:54:52 +0000 (06:54 -0700)
commit7b7033ad79f17193c4e9d29e752de42e3578e90f
tree2ae4852c6d46440cf35a1cd1367e31bc712509b8
parent049b23693680bd625c3b33cbf98a1358a037304d
Make pullblock() and trimblock() aware of extra data

Note that there is an odd semantic used by TCP, where it
expects to be able to call trimblock() on a pure ack (thus
leaving 0 valid bytes in the block), and yet not have the
block freed.  That meant that it wasn't as simple as just
using pullblock() to prune the leading space & is the
reason for the _pullblock() helper which retains an empty
block when free != 0.

Thanks to Barret for catching some bugs in the first version
of the patch.

Signed-off-by: Andrew Gallatin <gallatin@google.com>
kern/src/ns/allocb.c
kern/src/ns/qio.c