freebsd-dev/sys
Alexander Motin 321f819ba5 Refactor command ordering/blocking mechanism in CTL.
Replace long per-LUN queue of blocked commands, scanned on each command
completion and sometimes even twice, causing up to O(n^^2) processing cost,
by much shorter per-command blocked queues, scanned only when respective
command completes, and check only commands before the previous blocker,
reducing cost to O(n).

While there, unblock aborted commands to make them "complete" ASAP to be
removed from the OOA queue and so not waste time ordering other commands
against them.  Aborted commands that were not sent to execution yet should
have no visible side effects, so this is safe and easy optimization now,
comparing to commands already in processing, which are a still pain.

Together those two optimizations should fix quite pathological case, when
due to backend slowness CTL accumulated many thousands of blocked requests,
partially aborted by initiator and so supposedly not even existing, but
still wasting CTL CPU time.

MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.
2019-02-27 21:29:21 +00:00
..
amd64
arm Add base to the warning threshold. 2019-02-22 03:11:27 +00:00
arm64 xhci_mv: Move the driver to generic_xhci 2019-02-27 21:04:40 +00:00
bsm
cam Refactor command ordering/blocking mechanism in CTL. 2019-02-27 21:29:21 +00:00
cddl Fix fasttrap_sig{trap,segv}(). 2019-02-26 18:20:41 +00:00
compat import linux debugfs support 2019-02-23 20:56:41 +00:00
conf xhci_mv: Move the driver to generic_xhci 2019-02-27 21:04:40 +00:00
contrib Modularize xz. 2019-02-26 19:55:03 +00:00
crypto
ddb
dev xhci_mv: Move the driver to generic_xhci 2019-02-27 21:04:40 +00:00
dts
fs
gdb
geom Modularize xz. 2019-02-26 19:55:03 +00:00
gnu gcov support 2019-02-23 21:14:00 +00:00
i386 i386 PAE: avoid atomic for pte_store() where possible. 2019-02-26 09:45:44 +00:00
isa
kern Improve vmem tuning for platforms without a direct map. 2019-02-25 19:22:13 +00:00
kgssapi * Handle SIGPIPE in gssd 2019-02-21 01:30:37 +00:00
libkern
mips Modularize xz. 2019-02-26 19:55:03 +00:00
modules Make it possible to load fdt_slicer as a module (unloading works too fwiw). 2019-02-26 22:34:29 +00:00
net
net80211
netgraph
netinet Various cleanups to the management of multiple TCP stacks. 2019-02-27 20:24:23 +00:00
netinet6
netipsec Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
netpfil pf: Small performance tweak 2019-02-24 17:23:55 +00:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed
opencrypto Fix another bug introduced during the review process of r344140: 2019-02-25 19:14:16 +00:00
powerpc powerpc/mpc85xx: Synchronize timebase the platform correct way 2019-02-27 03:30:49 +00:00
riscv
rpc
security
sparc64
sys Update a comment to reflect reality; no functional changes. 2019-02-26 22:07:59 +00:00
teken
tests
tools
ufs FFS: allow sendfile(2) to work with block sizes greater than the page size 2019-02-26 04:56:10 +00:00
vm Fix incorrect assertion in vnode_pager_generic_getpages() 2019-02-26 04:50:46 +00:00
x86
xdr
xen
Makefile