sosendudp: Try to optimize out the additional mbuf alloc on output path

This optimization leaves enough space at the beginning of the mbuf, so
later on M_PREPEND() probably will not allocate addition mbuf.

This probably will not benefit any data that will be fragmented, e.g. by
IPv4, so this optimization is only performed when the size of data and
max size of protocol+link headers fit into one mbuf cluster.

This optimization could be turned off by net.inet.udp.sosend_prepend,
which is on by default.
bpf: Use bpf global token instead mplock to protect bpf stuffs

Submitted-by: tuxillo@ w/ modification
bt(4): Sync with FreeBSD.

Main change is making it MPSAFE.

Taken-from: FreeBSD
int64_t is long on x86_64, and not always equivalent to long long.

Similarly, uint64_t is unsigned long.

For their min/max value definitions, change LL/ULL suffixes to L/UL.

The bug report has some C++ sample code that show issues resulting
from treating them as long long.

Reported-by:   David Shao <davshao@gmail.com>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issues/2461>
Merge branch 'master' into gsocdrm_jfree
kernel: Fix typo (inavlid -> invalid).
kernel - Fix races in disk iteration and diskctx handling

* Add disk->d_refs to prevent a disk structure from being destroyed out
  from under an iteration.

* Redo the disk_enumeration() API to use markers and d_refs.

* Make adjustments to the dsched API.  In particular, do not return
  unreferenced tdio pointers in situations where they aren't used by
  the caller.

* Properly implement the ref count on the tdio's, one for each of the two
  lists the tdio belongs to, and ensure that dsched_thread_io_alloc()
  keeps an extra ref on the tdio after releasing the diskctx lock to prevent
  it from being ripped out while the code is pondering whether to place
  the tdio on the tdctx list.

* When deleting the tdio's for a tdctx try to destroy the diskctx.  That is,
  simply dereferencing it from the thread is not sufficient.

* When deleting the tdio's for a diskctx try to destroy the tdctx.  That is,
  simply dereferencing it from the diskctx is not sufficient.

* Handle destroy/ref races.
kernel - Move dsched_disk_destroy_callback() call

* Move the dsched_disk_destroy_callback() call from the caller to the
  message handler to avoid racing a disk probe that might be running at
  the time (if a disk device is added and destroyed quickly).
hammer2 - kernel cluster messaging support API work

* Rework the API significantly

* Add circuit tracking and sniffing features

* Add flags to automate the LNK_CONN, LNK_SPAN, and LNK_CIRC state machines.

* Misc improvemenets.
kernel - Preliminary xdisk remote block driver for cluster

* Basic infrastructure, ties into kern_dmsg.c cluster messaging system.
  (still a skeleton).

* Allows a userland program (aka hammer2 service) to add networked block
  devices to the local machine.
hammer2 - reformualte cluster messaging interface

* Reformulate the interface to use the revamped kern_dmsg.c API
hammer2 - cluster / libdmsg circuit work

* Major work on the virtual circuit code.  Note there are still some thread
  races.

* Major work on the spanning tree code to allow for future symmetric
  pathing support.

* fs_label is now part of the RB tree compare, along with pfs_fsid.
  (e.g. the serial number for BLK protocol services).

* Rip out the 'router' structure, replace with the 'circuit' structure.
  Embed circuit0 in the iocom.
hammer2 - cluster / hammer2 service daemon work

* Reformulate the service demon to use the updated libdmsg API

* Add code to track remote block device SPANs and to interface to the
  local /dev/xdisk to create local block devices for the remotes.
cluster - remote block device work

* xdisk(client) <-> diskiocom(server) now successfully does a full
  message transaction over a VC for xa_open().  Still lots to do.

* Fix I/O request deferrals since the open can occur before the VC is
  fully established.  This fixes a deadlock.

* Fix state->msg tracking in kern_dmsg.c.  Fixes a double-free.
UPDATING: Use release version numbers.
UPDATING: Mention that bt(4) is PCI only now.
Remove stli(4). Also remove ISA support from stl(4).

stli(4) was ISA only. stl(4) was for ISA/PCI controllers.

The stlload(8) and stlstty(8) utilities were for ISA controllers only,
so remove them too (along with ISA only firmware).

While here, clean up stl(4) a bit.
Move stlstats(8) to usr.sbin/
kernel - Turn off machdep.pmap_mmu_optimize by default

* Turn off machdep.pmap_mmu_optimize by default.  There are some bugs that
  need to be resolved which are messing up both apache and rtorrent.

* (this feature is already turned off by default on RELEASE).
kernel: Remove an #include I forgot previously.