Gleb Smirnoff 0f9d0a73a4 Merge from projects/sendfile:
o Introduce a notion of "not ready" mbufs in socket buffers.  These
mbufs are now being populated by some I/O in background and are
referenced outside.  This forces following implications:
- An mbuf which is "not ready" can't be taken out of the buffer.
- An mbuf that is behind a "not ready" in the queue neither.
- If sockbet buffer is flushed, then "not ready" mbufs shouln't be
  freed.

o In struct sockbuf the sb_cc field is split into sb_ccc and sb_acc.
  The sb_ccc stands for ""claimed character count", or "committed
  character count".  And the sb_acc is "available character count".
  Consumers of socket buffer API shouldn't already access them directly,
  but use sbused() and sbavail() respectively.
o Not ready mbufs are marked with M_NOTREADY, and ready but blocked ones
  with M_BLOCKED.
o New field sb_fnrdy points to the first not ready mbuf, to avoid linear
  search.
o New function sbready() is provided to activate certain amount of mbufs
  in a socket buffer.

A special note on SCTP:
  SCTP has its own sockbufs.  Unfortunately, FreeBSD stack doesn't yet
allow protocol specific sockbufs.  Thus, SCTP does some hacks to make
itself compatible with FreeBSD: it manages sockbufs on its own, but keeps
sb_cc updated to inform the stack of amount of data in them.  The new
notion of "not ready" data isn't supported by SCTP.  Instead, only a
mechanical substitute is done: s/sb_cc/sb_ccc/.
  A proper solution would be to take away struct sockbuf from struct
socket and allow protocols to implement their own socket buffers, like
SCTP already does.  This was discussed with rrs@.

Sponsored by:	Netflix
Sponsored by:	Nginx, Inc.
2014-11-30 12:52:33 +00:00
..
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-30 12:52:33 +00:00
2014-07-08 22:27:50 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-02-08 13:29:35 +00:00
2014-11-27 01:37:01 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-06-10 06:16:34 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-11-21 21:19:01 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-07-07 00:27:09 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2012-09-14 17:50:42 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2012-11-17 23:52:38 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-07-04 04:47:29 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-23 00:30:32 +00:00
2014-11-24 22:12:27 +00:00
2014-05-11 02:04:40 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-30 12:52:33 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-09-20 16:05:09 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-03-17 06:36:04 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-01-14 11:06:50 +00:00
2014-11-25 14:29:10 +00:00
2014-11-30 12:52:33 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-04-23 13:03:17 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-11-20 17:48:38 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-29 06:53:06 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2012-10-07 20:01:41 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2013-03-07 23:44:35 +00:00