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-09-29 21:54:46 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-10-09 00:41:42 +00:00
2014-11-25 14:29:10 +00:00
2013-04-28 09:29:44 +00:00
2014-11-30 12:52:33 +00:00
2014-07-08 22:27:50 +00:00
2014-06-23 08:23:05 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-04-13 05:21:56 +00:00
2013-03-07 21:34:16 +00:00
2013-03-07 21:37:23 +00:00
2014-11-25 14:29:10 +00:00
2012-10-19 14:49:42 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2012-10-20 10:33:15 +00:00
2014-11-23 22:16:43 +00:00
2014-10-09 00:50:33 +00:00
2014-10-17 21:09:03 +00:00
2014-11-25 14:29:10 +00:00
2014-05-06 04:22:01 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-06-23 08:23:05 +00:00
2014-02-08 13:29:35 +00:00
2014-06-23 08:23:05 +00:00
2014-10-09 01:46:31 +00:00
2014-11-27 01:37:01 +00:00
2014-11-24 23:29:56 +00:00
2014-10-09 00:55:04 +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-06-23 08:23:05 +00:00
2014-11-24 09:31: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-05-06 04:22:01 +00:00
2014-10-08 17:40:58 +00:00
2012-10-19 14:49:42 +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
2012-10-19 14:49:42 +00:00
2014-06-23 08:23:05 +00:00
2013-05-23 20:52:30 +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
2013-03-17 06:57:25 +00:00
2014-10-30 06:54:25 +00:00
2014-11-25 14:29:10 +00:00
2014-11-05 14:55:01 +00:00
2014-11-05 15:03:58 +00:00
2014-03-14 03:07:51 +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-05-06 04:22:01 +00:00
2014-05-06 04:22: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-08-26 21:21:57 +00:00
2014-11-25 14:29:10 +00:00
2012-09-14 17:50:42 +00:00
2014-05-06 04:22:01 +00:00
2014-06-23 08:23:05 +00:00
2014-11-25 14:29:10 +00:00
2014-11-23 23:17:18 +00:00
2014-11-25 14:29:10 +00:00
2012-11-17 23:52:38 +00:00
2014-11-22 12:13:05 +00:00
2014-11-25 14:29:10 +00:00
2014-06-23 08:23:05 +00:00
2014-05-06 04:22:01 +00:00
2014-11-25 14:29:10 +00:00
2014-06-23 08:23:05 +00:00
2014-07-04 04:47:29 +00:00
2013-06-09 16:33:32 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-08-21 02:40:33 +00:00
2014-07-23 23:01:54 +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-06-23 08:23:05 +00:00
2014-04-13 05:21:56 +00:00
2014-06-23 08:23:05 +00:00
2014-04-13 05:21:56 +00:00
2014-11-25 14:29:10 +00:00
2013-05-23 05:42:35 +00:00
2012-11-18 16:34: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
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-05-04 12:20: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-06-15 16:38:17 +00:00
2013-10-20 20:10:31 +00:00
2014-03-14 03:07:51 +00:00
2014-11-22 22:13:00 +00:00
2014-06-01 13:33:22 +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-06-23 08:23:05 +00:00
2012-10-19 14:49:42 +00:00
2014-06-06 17:38:37 +00:00
2013-10-15 07:37:30 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-03-16 11:04:44 +00:00
2014-11-25 14:29:10 +00:00
2014-08-08 17:29:01 +00:00
2014-06-17 12:59:03 +00:00
2014-11-25 14:29:10 +00:00
2014-08-16 14:56:11 +00:00
2014-11-25 14:29:10 +00:00
2014-06-23 08:23:05 +00:00
2014-11-22 01:22:03 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-06-23 08:23:05 +00:00
2014-06-23 08:23:05 +00:00
2013-01-14 11:06:50 +00:00
2014-11-25 14:29:10 +00:00
2014-11-25 21:43:51 +00:00
2014-11-30 12:52:33 +00:00
2014-11-25 14:29:10 +00:00
2013-06-09 08:06:26 +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-03-16 08:04:06 +00:00
2014-11-25 14:29:10 +00:00
2012-12-08 17:41:39 +00:00
2014-10-28 10:39:41 +00:00
2012-12-08 22:16:36 +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-05-06 04:22:01 +00:00
2014-11-25 14:29:10 +00:00
2014-10-24 20:02:44 +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-04-13 05:21:56 +00:00
2014-06-23 08:23:05 +00:00
2014-03-16 11:04:44 +00:00
2014-11-25 14:29:10 +00:00
2013-03-15 00:05: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-07-14 12:24:38 +00:00
2014-05-06 04:22:01 +00:00
2014-05-06 04:22:01 +00:00
2014-11-25 14:29:10 +00:00
2014-04-13 05:21:56 +00:00
2014-11-29 06:53:06 +00:00
2013-03-15 00:05:50 +00:00
2014-11-25 14:29:10 +00:00
2014-07-24 15:16:03 +00:00
2014-11-25 14:29:10 +00:00
2012-10-22 03:07:05 +00:00
2014-11-25 14:29:10 +00:00
2014-03-14 03:07:51 +00:00
2014-06-23 08:23:05 +00:00
2012-10-07 20:01:41 +00:00
2014-06-25 15:39:08 +00:00
2014-05-06 04:22: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-11-25 14:29:10 +00:00
2014-11-25 14:29:10 +00:00
2014-11-13 00:46:53 +00:00
2014-06-05 08:20:14 +00:00
2014-06-23 08:23:05 +00:00
2014-06-23 08:23:05 +00:00
2014-11-26 08:44:05 +00:00
2013-06-28 21:00:08 +00:00
2013-03-07 23:44:35 +00:00
2013-06-28 21:00:08 +00:00
2013-06-28 21:00:08 +00:00
2013-06-28 21:00:08 +00:00