Implement a per-peer pending prefix queue and lookup table and
a pending attribute queue and lookup table.
Withdraws just end up in the peer pending withdraw prefix queue.
For updates the prefix is queued on a pending attribute entry, which
itself is queued on the peer pending update queue.
For updates this allows to aggregate multiple prefixes into a single
UPDATE message.
All prefixes are also stored in the per-peer lookup table and this table
is checked before adding an entry. If the object already exists the prefix
is first dequeued and the requeued at the tail of its queue.
pend_prefix_add() is therefor a bit fiddly.
Similar all attrs are added to the per-peer attribute lookup table and this
is used to locate the update queue where the prefix is queued on.
Once queued an attr is not requeued to ensure updates are sent in FIFO order.
If the attr pointer in struct pend_prefix is NULL then it is a withdraw.
[8 lines not shown]
don't try to build examples/fuse in smba, libfuse is detected now that
the headers have moved and examples/fuse/clifuse.c doesn't build.
(this is for smb2mount, the readme says "This is experimental
work-in-progress code, don't expect it to do anything sensible").
ok bket, Ian McWilliam (maintainers)
Push `pageqlock' dances inside uvm_page{de,}activate() & uvm_pagewire().
Tested during multiple bulks on amd64, i386, arm64 and sparc64 by jca@,
phessler@ and sthen@.