freebsd-skq/sys
markj 6266e5e4ec Fix some I/O ordering issues in gmirror.
- BIO_FLUSH requests were dispatched to the disks directly from
  g_mirror_start() rather than going through the mirror's I/O request
  queue, so they could have been reordered with preceding writes.
  Address this by processing such requests from the queue, avoiding
  direct dispatch.
- Handling for collisions with synchronization requests was too
  fine-grained and could cause reordering of writes. In particular,
  BIO_ORDERED was not being honoured. Address this by effectively
  freezing the request queue any time a collision with a synchronization
  request occurs. The queue is unfrozen once the collision with the
  first frozen request is over.
- The above-mentioned collision handling allowed reads to jump ahead
  of writes to the same offset. Address this by freezing all request
  types when a collision occurs, not just BIO_WRITEs and BIO_DELETEs.

Also add some more fail points for use in testing error handling.

Reviewed by:	imp
MFC after:	3 weeks
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D13559
2018-01-02 18:11:54 +00:00
..
amd64 Avoid re-check of usermode condition. 2018-01-01 20:47:03 +00:00
arm aw_sid: Add support for a64 2017-12-31 22:35:32 +00:00
arm64 Introduce an architecture-agnostic <sys/_stdarg.h> to reduce 2017-12-25 20:54:00 +00:00
bsm sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
cam ctl: Correct comment in ctl_worker_thread 2017-12-27 15:39:31 +00:00
cddl Fix arc after r326347 broke various memory limit queries. Use UMA features 2018-01-02 04:35:56 +00:00
compat Update Matthew Macy contact info 2017-12-19 17:59:00 +00:00
conf Connect kern_tslog.c to the build and add TSLOG / TSLOGSIZE kernel options. 2017-12-31 09:21:34 +00:00
contrib MFC: r326864 2017-12-14 23:21:31 +00:00
crypto sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ddb ddb: fix validation of cpu id in 'set db_cpu=x' 2017-12-05 14:22:08 +00:00
dev [net80211] convert all of the WME use over to a temporary copy of WME info. 2018-01-02 00:07:28 +00:00
dts dts: arm: Remove imx6 related dts 2017-12-04 13:28:56 +00:00
fs Reuse kern_proc_vmmap_resident() for procfs_map resident count. 2017-12-28 13:23:13 +00:00
gdb sys/gdb: further adoption of SPDX licensing ID tags. 2017-11-27 15:16:59 +00:00
geom Fix some I/O ordering issues in gmirror. 2018-01-02 18:11:54 +00:00
gnu Introduce bwn(4) support for the bhnd(4) bus. 2017-12-02 02:21:27 +00:00
i386 Avoid re-check of usermode condition. 2018-01-01 20:47:03 +00:00
isa On further testing on actual machines with this hardware, we should 2017-12-30 08:16:31 +00:00
kern sysctl_kern_proc_args: do not take the fast path if p_args is NULL 2018-01-01 21:25:01 +00:00
kgssapi sys/kgssapi: general adoption of SPDX licensing ID tags. 2017-11-27 15:49:00 +00:00
libkern SPDX: fix wrong license ID tag in libkern. 2017-12-28 01:20:30 +00:00
mips Remove sys/mips/rmi. It's been unmaintained since 2011. This hardware 2018-01-01 05:13:03 +00:00
modules Move i386/isa/elink.[hc] to dev/ep. 2017-12-30 11:42:49 +00:00
net pf: Clean all fragments on shutdown 2017-12-31 10:01:31 +00:00
net80211 net80211: sanitize input for ieee80211_output() 2017-12-30 00:40:34 +00:00
netgraph sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
netinet Correct the comment describing badrs which is bad router solicitiation, 2017-12-29 07:23:18 +00:00
netinet6 Fix some typos. 2017-12-28 20:40:56 +00:00
netipsec Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
netpfil pf: Allow the module to be unloaded 2017-12-31 16:18:13 +00:00
netsmb sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
nfs Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
nfsclient sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
nfsserver sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
nlm Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
ofed sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
opencrypto Remove a redunant check. 2017-12-30 03:08:49 +00:00
powerpc Fix reversed endianness that crept in at some point. Blue is now blue 2018-01-02 03:59:46 +00:00
riscv Use the TSLOG framework to record entry/exit timestamps for DELAY and 2017-12-31 09:24:41 +00:00
rpc Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
security Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
sparc64 Chase r327432... sparc64 clock.c now needs to include sys/tslog.h 2017-12-31 20:30:51 +00:00
sys Add a validbcd() routine that uses the bcd2bin_data[] array and returns a 2017-12-31 22:43:24 +00:00
teken sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tests style(9): sort headers 2017-05-09 05:08:47 +00:00
tools Teach makeobjops.awk to accept PROLOG and EPILOG blocks before 2017-12-31 09:23:19 +00:00
ufs SPDX: Complete License ID tags for UFS. 2017-12-27 19:13:50 +00:00
vm Fix arc after r326347 broke various memory limit queries. Use UMA features 2018-01-02 04:35:56 +00:00
x86 Add CR4.SMAP control bit. 2018-01-01 19:34:19 +00:00
xdr sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
xen sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
Makefile Move sys/boot to stand. Fix all references to new location 2017-11-14 23:02:19 +00:00