freebsd-nq/sys
Pawel Jakub Dawidek 63a6c5c12b GEOM has an internal mechanism to deal with ENOMEM errors returned via
g_io_deliver(). In such case it increases 'pace' counter on each ENOMEM and
reschedules the request. The 'pace' counter is decreased for each request going
down, but until 'pace' is greater than zero, GEOM will handle at most 10
requests per second. For GEOM GATE users that are proxy to local GEOM providers
(like ggatel(8) and HAST) we can end up with almost permanent slow down of GEOM
down queue. This is because once we reach GEOM GATE queue limit, we return
ENOMEM to the GEOM. This means that we have, eg. 1024 I/O requests in the GEOM
GATE queue. To make room in the queue and stop returning ENOMEM we need to
proceed the requests of course, but those requests are handled by userland
daemons that handle them by reading/writing also from/to local GEOM providers.
For example with HAST, a new requests comes to /dev/hast/data, which is GEOM
GATE provider. GEOM GATE passes the request to hastd(8) and hastd(8)
reads/writes from/to /dev/da0. Once we reach GEOM GATE queue limit, to free up
a slot in GEOM GATE queue, hastd(8) has to read/write from/to /dev/da0, but
this request will also be very slow, because GEOM now slows down all the
requests. We end up with full queue that we can unload at the speed of 10
requests per second. This simply looks like a deadlock.

Fix it by allowing userland daemons that work with both GEOM GATE and local
GEOM providers to specify unlimited queue size, so GEOM GATE will never return
ENOMEM to the GEOM.

MFC after:	1 week
2011-04-02 06:56:06 +00:00
..
amd64 Add support for executing the FreeBSD 1/i386 a.out binaries on amd64. 2011-04-01 11:16:29 +00:00
arm Break out the ath PCI logic into a separate device/module. 2011-03-31 08:07:13 +00:00
boot MFi386: the part of 219452 2011-03-24 15:09:36 +00:00
bsm Add ECAPMODE, "Not permitted in capability mode", a new kernel errno 2011-03-01 13:14:28 +00:00
cam Don't automatically send a START UNIT to sequential access devices- 2011-03-03 18:28:21 +00:00
cddl Checking file access on size change is bogus. The checks are done earlier by 2011-03-24 20:28:09 +00:00
compat Regen 2011-04-01 11:16:53 +00:00
conf Add 'mos' interface to NOTES 2011-04-01 03:41:41 +00:00
contrib Merge ACPICA 20110316. 2011-03-17 00:29:53 +00:00
crypto Fix a bug in the result of manual assembly. 2011-03-02 14:56:58 +00:00
ddb Modify kdb_trap() so that it re-calls the dbbe_trap function as long as 2011-02-18 22:25:11 +00:00
dev From ath9k - clear the RX descriptor status before recycling it. 2011-04-02 00:27:22 +00:00
fs This patch fixes the Experimental NFS client to properly deal with 32 bit or 64 2011-03-30 01:10:11 +00:00
gdb Modify kdb_trap() so that it re-calls the dbbe_trap function as long as 2011-02-18 22:25:11 +00:00
geom GEOM has an internal mechanism to deal with ENOMEM errors returned via 2011-04-02 06:56:06 +00:00
gnu Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
i386 Revert r220032:linux compat: add SO_PASSCRED option with basic handling 2011-03-31 08:14:51 +00:00
ia64 Add support for executing the FreeBSD 1/i386 a.out binaries on amd64. 2011-04-01 11:16:29 +00:00
isa - Enable an extra debugging bootverbose printf when probing ISA PNP cards 2011-03-29 12:38:13 +00:00
kern After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
kgssapi
libkern Fix typos - remove duplicate "is". 2011-02-23 09:22:33 +00:00
mips A handful of the openwrt devices use a MAC address that's at a hard-coded 2011-04-02 03:48:15 +00:00
modules Add support for executing the FreeBSD 1/i386 a.out binaries on amd64. 2011-04-01 11:16:29 +00:00
net - Merge changes to the base system to support OFED. These include 2011-03-21 09:40:01 +00:00
net80211 Fix a WME corner case found by the FreeBSD 802.11n testing crew. 2011-03-24 15:27:15 +00:00
netatalk
netgraph Improve locking of creating and dropping links in the graph, acquiring 2011-03-21 14:18:40 +00:00
netinet Fill up src_port and dst_port variables for SCTP over IPv4. 2011-03-31 16:30:14 +00:00
netinet6 - Merge changes to the base system to support OFED. These include 2011-03-21 09:40:01 +00:00
netipsec Do not allow recursive RFC3173 IPComp payload. 2011-04-01 14:13:49 +00:00
netipx
netnatm
netncp
netsmb Change some variables from int to size_t. This is more accurate since 2011-01-08 23:06:54 +00:00
nfs Modify the experimental NFSv4 server so that it posts a SIGUSR2 2011-01-14 23:30:35 +00:00
nfsclient Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
nfsserver Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
nlm sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:54:19 +00:00
ofed - Implement wake-on-lan support in mlxen. 2011-03-26 00:54:01 +00:00
opencrypto After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
pc98 Break out the ath PCI logic into a separate device/module. 2011-03-31 08:07:13 +00:00
pci Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
powerpc Remove duplicate definition of FIRSTARG. 2011-03-17 19:44:00 +00:00
rpc Mfp4 CH=177274,177280,177284-177285,177297,177324-177325 2011-02-16 21:29:13 +00:00
security - Add a FEATURE for capsicum (security_capabilities). 2011-03-04 09:03:54 +00:00
sparc64 Break out the ath PCI logic into a separate device/module. 2011-03-31 08:07:13 +00:00
sun4v Remove the advertising clause from the UCB license according to the 2011-03-13 13:42:43 +00:00
sys After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
teken Use proper bounds checking on VPA. 2010-12-05 10:15:23 +00:00
tools GNU awk does not output escaped newlines in multi-line printc statements. This 2011-03-31 21:33:33 +00:00
ufs Fix the softdep_request_cleanup() function definition for !SOFTUPDATES case. 2011-03-28 12:39:48 +00:00
vm Handle the corner case in vm_fault_quick_hold_pages(). 2011-03-25 16:38:10 +00:00
x86 Revert r219676. 2011-03-16 16:44:08 +00:00
xdr
xen Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
Makefile Add lex and yacc sources to things cscope'd. 2010-11-21 03:58:11 +00:00