freebsd-skq/sys/geom
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
..
bde sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
cache sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
concat sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
eli When building standalone, include stand.h rather than the kernel 2017-12-05 21:37:32 +00:00
gate sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
journal sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
label sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
linux_lvm sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
mirror Fix some I/O ordering issues in gmirror. 2018-01-02 18:11:54 +00:00
mountver sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
multipath sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
nop sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
part sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
raid Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
raid3 sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
sched sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
shsec sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
stripe sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
uzip sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
vinum sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
virstor sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
zero sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_aes.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_bsd_enc.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_bsd.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_ccd.c geom_ccd.c: Fix the licenses properly 2017-12-30 02:07:18 +00:00
geom_ctl.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_ctl.h sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_dev.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_disk.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_disk.h sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_dump.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_event.c Instrument "boot holds" for the benefit of the TSLOG framework. These 2017-12-31 09:23:52 +00:00
geom_flashmap.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_fox.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_int.h sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_io.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_kern.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_map.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_mbr_enc.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_mbr.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_redboot.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_slice.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_slice.h sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_subr.c Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
geom_sunlabel_enc.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_sunlabel.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_vfs.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_vfs.h sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom_vol_ffs.c sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
geom.h sys/geom: adoption of SPDX licensing ID tags. 2017-11-27 15:17:37 +00:00
notes