Gleb Smirnoff
de2d47842e
SMR protection for inpcbs
...
With introduction of epoch(9) synchronization to network stack the
inpcb database became protected by the network epoch together with
static network data (interfaces, addresses, etc). However, inpcb
aren't static in nature, they are created and destroyed all the
time, which creates some traffic on the epoch(9) garbage collector.
Fairly new feature of uma(9) - Safe Memory Reclamation allows to
safely free memory in page-sized batches, with virtually zero
overhead compared to uma_zfree(). However, unlike epoch(9), it
puts stricter requirement on the access to the protected memory,
needing the critical(9) section to access it. Details:
- The database is already build on CK lists, thanks to epoch(9).
- For write access nothing is changed.
- For a lookup in the database SMR section is now required.
Once the desired inpcb is found we need to transition from SMR
section to r/w lock on the inpcb itself, with a check that inpcb
isn't yet freed. This requires some compexity, since SMR section
itself is a critical(9) section. The complexity is hidden from
KPI users in inp_smr_lock().
- For a inpcb list traversal (a pcblist sysctl, or broadcast
notification) also a new KPI is provided, that hides internals of
the database - inp_next(struct inp_iterator *).
Reviewed by: rrs
Differential revision: https://reviews.freebsd.org/D33022
2021-12-02 10:48:48 -08:00
..
2021-11-15 13:01:30 -05:00
2020-12-17 20:31:17 +00:00
2021-07-28 13:49:16 -06:00
2019-10-29 17:28:25 +00:00
2021-09-07 10:08:51 -06:00
2021-08-12 11:45:25 +03:00
2020-11-08 04:24:29 +00:00
2021-11-25 22:50:42 +00:00
2021-11-15 02:33:01 +02:00
2021-11-29 22:04:43 +00:00
2021-11-25 22:50:42 +00:00
2021-11-25 22:50:42 +00:00
2021-11-15 16:13:24 -05:00
2021-07-09 20:57:58 -04:00
2021-06-07 16:45:50 -04:00
2021-11-03 16:03:51 -06:00
2021-09-24 23:31:51 -04:00
2021-04-14 13:03:33 -04:00
2021-11-25 22:50:42 +00:00
2021-11-22 22:36:56 +00:00
2020-11-23 18:27:21 +00:00
2021-11-19 15:05:53 -04:00
2021-07-18 23:06:19 -05:00
2020-11-19 02:50:48 +00:00
2021-11-15 18:34:27 +00:00
2021-11-25 22:50:42 +00:00
2021-11-29 22:04:43 +00:00
2020-09-01 22:12:32 +00:00
2020-02-26 14:26:36 +00:00
2021-10-28 20:49:56 +03:00
2020-01-30 20:05:05 +00:00
2021-09-23 07:15:42 +02:00
2021-11-25 22:50:42 +00:00
2021-09-17 14:19:05 -04:00
2021-07-29 12:41:29 +03:00
2020-09-01 22:12:32 +00:00
2021-11-25 22:50:42 +00:00
2021-11-28 10:36:09 +02:00
2021-09-18 10:16:58 +00:00
2020-09-01 22:12:32 +00:00
2019-08-21 23:43:58 +00:00
2020-10-28 13:46:11 +00:00
2021-10-06 16:09:41 -04:00
2021-11-17 03:09:20 +01:00
2020-12-26 20:25:02 -08:00
2020-09-01 22:12:32 +00:00
2020-01-30 20:05:05 +00:00
2021-09-02 21:16:46 -04:00
2020-12-04 18:56:44 +00:00
2021-09-09 10:11:02 -04:00
2021-04-18 11:19:15 -06:00
2020-09-01 22:12:32 +00:00
2020-02-26 14:26:36 +00:00
2020-12-26 20:25:02 -08:00
2021-11-25 22:50:42 +00:00
2021-10-20 00:25:19 +03:00
2021-06-02 13:22:57 -06:00
2021-07-29 12:41:29 +03:00
2019-09-15 02:59:53 +00:00
2021-01-11 15:36:57 -08:00
2021-11-29 22:04:42 +00:00
2021-10-27 11:18:13 -04:00
2021-05-23 17:55:27 +00:00
2021-11-09 10:50:12 -08:00
2021-07-20 09:54:09 +03:00
2021-09-28 11:36:09 -03:00
2021-11-25 22:50:42 +00:00
2020-02-26 14:26:36 +00:00
2021-05-23 17:55:27 +00:00
2021-11-10 21:18:54 +02:00
2020-11-08 15:54:59 +00:00
2021-11-22 22:36:54 +00:00
2021-11-30 15:23:23 +02:00
2021-07-29 12:41:29 +03:00
2021-10-28 21:56:21 +03:00
2021-08-31 16:38:05 -04:00
2021-09-02 21:16:46 -04:00
2021-10-17 13:36:38 -07:00
2021-09-25 11:47:24 +02:00
2021-11-22 22:36:55 +00:00
2020-04-15 18:39:12 +00:00
2020-09-01 22:12:32 +00:00
2021-11-25 22:50:42 +00:00
2021-11-25 22:50:42 +00:00
2021-09-27 20:04:51 -07:00
2021-09-01 21:58:16 +01:00
2021-08-08 10:42:24 -04:00
2020-09-01 22:12:32 +00:00
2021-11-05 15:45:51 -05:00
2021-11-19 19:13:28 +01:00
2020-10-28 13:46:11 +00:00
2020-08-05 09:27:03 +00:00
2021-11-03 12:36:02 -04:00
2020-01-03 18:29:20 +00:00
2021-09-05 12:45:29 -07:00
2021-07-13 17:47:27 -04:00
2020-09-01 22:12:32 +00:00
2021-08-10 21:27:54 -04:00
2021-12-02 10:54:15 +01:00
2020-09-01 22:12:32 +00:00
2021-08-08 10:42:24 -04:00
2020-01-30 20:05:05 +00:00
2020-02-20 23:53:48 +00:00
2020-11-05 15:08:56 +00:00
2021-09-14 14:29:27 -04:00
2021-07-29 21:13:32 -04:00
2021-10-17 15:31:35 +01:00
2021-03-02 18:33:45 -07:00
2020-10-26 04:04:06 +00:00
2021-05-23 10:53:25 +02:00
2020-01-30 20:05:05 +00:00
2020-09-01 22:12:32 +00:00
2021-10-21 21:40:46 +03:00
2020-11-29 19:38:03 +00:00
2021-08-08 21:54:49 -04:00
2021-07-08 08:46:41 +02:00
2021-08-11 14:44:22 -03:00
2021-04-21 15:37:24 -06:00
2021-05-23 17:55:27 +00:00
2021-08-04 11:50:34 -07:00
2020-09-01 22:12:32 +00:00
2021-01-08 09:24:49 +02:00
2021-11-03 12:36:02 -04:00
2021-11-19 15:05:53 -04:00
2021-06-16 20:00:14 -06:00
2020-11-09 00:34:23 +00:00
2020-07-24 17:32:10 +00:00
2021-11-03 02:32:46 -05:00
2020-09-01 22:12:32 +00:00
2021-09-03 23:13:42 -04:00
2020-08-13 20:48:14 +00:00
2021-04-02 15:41:51 +03:00
2021-08-08 10:42:24 -04:00
2021-09-27 14:38:26 -03:00
2020-09-28 17:19:57 +00:00
2021-10-05 14:47:38 -04:00
2020-09-01 22:12:32 +00:00
2021-05-25 16:59:18 -07:00
2021-10-06 17:05:22 +03:00
2021-07-28 22:00:29 -04:00
2020-03-06 19:10:00 +00:00
2020-07-06 16:33:28 +00:00
2021-04-02 13:17:53 +11:00
2021-10-30 09:54:17 +01:00
2021-09-02 21:16:46 -04:00
2021-08-08 10:42:24 -04:00
2021-09-07 02:43:34 +03:00
2021-02-18 14:02:48 +00:00
2020-09-01 22:12:32 +00:00
2020-09-01 22:12:32 +00:00
2021-09-02 18:28:45 +00:00
2021-12-02 10:48:48 -08:00
2020-03-19 15:39:45 +00:00
2021-10-11 13:22:32 +00:00
2021-10-14 00:43:48 +01:00
2020-01-12 23:52:16 +00:00
2021-10-12 02:43:07 -05:00
2021-10-11 13:22:32 +00:00
2021-09-16 20:11:27 +03:00
2021-11-09 10:50:12 -08:00
2021-11-10 21:18:54 +02:00
2021-11-29 22:04:47 +00:00
2021-11-29 22:04:58 +00:00
2021-11-17 20:12:23 +00:00
2021-11-17 20:12:23 +00:00
2021-11-17 20:12:24 +00:00
2021-11-17 20:12:23 +00:00
2020-07-06 16:34:15 +00:00
2021-04-18 11:14:17 -06:00
2021-10-11 13:22:32 +00:00
2020-08-27 05:11:15 +00:00
2021-09-03 22:18:51 -04:00
2021-06-14 17:32:27 -04:00
2021-09-10 09:07:40 -04:00
2021-12-02 10:48:48 -08:00
2019-11-06 22:40:19 +00:00
2021-11-10 16:57:12 -05:00
2020-10-22 09:17:56 +00:00
2021-10-11 13:22:32 +00:00
2021-11-17 20:12:26 +00:00
2021-10-21 21:40:46 +03:00
2021-09-07 15:06:48 -04:00
2021-11-09 10:50:12 -08:00
2021-11-29 22:04:42 +00:00
2021-11-25 22:50:42 +00:00
2021-11-25 22:50:42 +00:00
2021-11-14 16:59:53 +00:00
2021-11-30 07:28:40 +01:00
2021-11-25 22:50:42 +00:00
2021-09-02 21:36:33 +03:00
2021-11-27 23:07:26 +00:00
2020-09-01 22:12:32 +00:00
2021-11-25 22:50:42 +00:00
2021-08-27 18:39:45 +03:00
2021-05-30 14:53:47 -07:00
2021-11-26 12:22:09 +00:00
2021-11-25 22:50:42 +00:00
2021-11-25 22:50:42 +00:00
2021-11-27 23:07:25 +00:00
2021-11-25 22:50:42 +00:00
2021-11-15 13:01:30 -05:00
2021-11-13 01:02:13 +02:00