freebsd-skq/sys
avg 2cdf99d3c4 fix an architectural problem introduced in r320156, ZFS ABD import
The implementation of ZFS refcount_t uses the emulated illumos mutex
(the sx lock) and the waiting memory allocation when ZFS_DEBUG is
enabled.  This makes refcount_t unsuitable for use in GEOM g_up
thread where sleeping is prohibited.

When importing the ABD change I modified vdev_geom using illumos
vdev_disk as an example.  As a result, I added a call to abd_return_buf
in vdev_geom_io_intr.  The latter is called on g_up thread while the
former uses refcount_t.

This change fixes the problem by deferring the abd_return_buf call to
the previously unused vdev_geom_io_done that is called on a ZFS zio
taskqueue thread where sleeping is allowed.

A side bonus of this change is that now a vdev zio has a pointer
to its corresponding bio while the zio is active.

Reported by:	Shawn Webb <shawn.webb@hardenedbsd.org>
Tested by:	Shawn Webb <shawn.webb@hardenedbsd.org>
MFC after:	1 week
X-MFC with:	r320156
2017-06-28 13:59:20 +00:00
..
amd64 Translate between abridged and full x87 tags for compat32 2017-06-24 11:38:31 +00:00
arm [arm] Use correct index value when checking range validity 2017-06-26 21:45:33 +00:00
arm64 Add parentheses missed in r320388 2017-06-27 16:30:01 +00:00
boot loader.efi: Disable smbios for arm 2017-06-24 09:33:25 +00:00
bsm Commit the 64-bit inode project. 2017-05-23 09:29:05 +00:00
cam Fix a panic in camperiphfree(). 2017-06-27 19:26:02 +00:00
cddl fix an architectural problem introduced in r320156, ZFS ABD import 2017-06-28 13:59:20 +00:00
compat Update comments and simplify conditionals for compat32 2017-06-27 01:29:10 +00:00
conf Implement parts of the hrtimer API in the LinuxKPI. 2017-06-26 16:28:46 +00:00
contrib Avoid including list.h in LinuxKPI headers. 2017-06-18 16:43:57 +00:00
crypto Remove register keyword from sys/ and ANSIfy prototypes 2017-05-17 00:34:34 +00:00
ddb Remove register keyword from sys/ and ANSIfy prototypes 2017-05-17 00:34:34 +00:00
dev cxgbe/t4_tom: Do not include space taken by the TCP timestamp option in 2017-06-27 22:05:06 +00:00
fs Complete support for IO_APPEND flag in fuse 2017-06-28 13:56:15 +00:00
gdb
geom With r318394 seems it breaks gpart(8) in some embedded systems such like PCEngines, 2017-06-27 01:22:27 +00:00
gnu Update the GNU DTS file from Linux 4.11 2017-06-20 03:13:49 +00:00
i386 Fix indent. 2017-06-24 10:19:06 +00:00
isa Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
kern Do not ignore an error from vm_mmap_object(). 2017-06-27 20:12:13 +00:00
kgssapi
libkern arm64: add ".arch armv8-a+crc" to allow use of crc instructions 2017-06-08 20:06:09 +00:00
mips Add IPSEC support to mips ERL kernel config file 2017-06-26 18:28:00 +00:00
modules Sort SRCS. 2017-06-26 21:14:33 +00:00
net Update comments and simplify conditionals for compat32 2017-06-27 01:29:10 +00:00
net80211 net80211: initialize i_seq for A-MPDU frames. 2017-06-01 20:46:43 +00:00
netgraph Check return value from soaccept(). 2017-06-14 16:13:20 +00:00
netinet Handle sctp_get_next_param() in a consistent way. 2017-06-23 21:01:57 +00:00
netinet6 Fix an unnecessary/incorrect check in the PKTOPT_EXTHDRCPY macro. 2017-05-30 14:50:28 +00:00
netipsec Build kdebug_secreplay() function only when IPSEC_DEBUG is defined. 2017-06-01 10:04:12 +00:00
netpfil Fix the queue delay estimation in PIE/FQ-PIE when the timestamp 2017-05-19 08:38:03 +00:00
netsmb
nfs Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nfsclient Add an NFSv4.1 mount option for "use one openowner". 2017-04-13 21:54:19 +00:00
nfsserver Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nlm Commit the 64-bit inode project. 2017-05-23 09:29:05 +00:00
ofed Avoid including list.h in LinuxKPI headers. 2017-06-18 16:43:57 +00:00
opencrypto Use const with some read-only buffers in opencrypto APIs. 2017-05-09 18:28:42 +00:00
powerpc Disable interrupts when updating the TLB 2017-06-27 01:57:22 +00:00
riscv Undefine temporary macro. 2017-06-17 07:36:46 +00:00
rpc Listening sockets improvements. 2017-06-08 21:30:34 +00:00
security Correct bitwise test in mac_bsdextended ugidfw_rule_valid() 2017-06-13 01:17:58 +00:00
sparc64 Move struct syscall_args syscall arguments parameters container into 2017-06-12 21:03:23 +00:00
sys Solve the y2038 problem for powerpc 2017-06-26 02:25:19 +00:00
teken Oops, my fix for bright colors broke bright black some more (in cases 2017-03-27 10:48:28 +00:00
tests style(9): sort headers 2017-05-09 05:08:47 +00:00
tools make.conf: Add the possibility to use another DTC 2017-06-17 23:34:53 +00:00
ufs Mitigate several problems with the softdep_request_cleanup() on busy 2017-06-03 16:18:50 +00:00
vm Treat the addr argument for mmap(2) request without MAP_FIXED flag as 2017-06-28 04:02:36 +00:00
x86 Fix batched unload for DMAR busdma in qi mode. 2017-06-19 21:48:52 +00:00
xdr * limit size of buffers to RPC_MAXDATASIZE 2017-06-01 06:12:25 +00:00
xen xenstore: fix suspension when using the xenstore device 2017-03-07 09:17:48 +00:00
Makefile Remove glimpse make target added in r181432 2017-05-22 15:53:30 +00:00