freebsd-skq/sys/geom
Andriy Gapon 7103ac8ad6 gmirror: treat ENXIO as disk disconnect, not media error
In theory, all data access errors mean that a member is out of sync
at most.  But they were treated as more serious errors to avoid the
situation where a flaky disk gets repeatedly disconnected, re-synchronized,
reconnected and then disconnected again.

ENXIO is a special error that means that the member disk disappeared,
so it should get the same handling as the GEOM orphaning event.
There is a better chance that when the disk is reconnected, it will be
a good member again.

When ENXIO happens on a read we use the exisiting G_MIRROR_BUMP_SYNCID
mechanism which means that the mirror's syncid is increased as soon
as there is a write to the mirror.  That's because no data has got out
of sync yet, but the problematic memeber is disconnected, so the future
write will make it stale.

When ENXIO happens on a write we use a new G_MIRROR_BUMP_SYNCID_NOW
mechanism which means that we update the mirror metadata as soon as
possible because the problematic memeber is already behind.

Reviewed by:	markj, imp
MFC after:	3 weeks
Differential Revision: https://reviews.freebsd.org/D9463
2017-09-15 13:57:08 +00:00
..
bde Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
cache
concat Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
eli Fix information leak in geli(8) integrity mode 2017-09-09 01:41:01 +00:00
gate Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
journal When read requests are sent from a filesystem running above g_journal, 2017-08-13 18:09:22 +00:00
label Relax checking if the privider size matches size recorded in the 2016-07-18 05:00:01 +00:00
linux_lvm Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
mirror gmirror: treat ENXIO as disk disconnect, not media error 2017-09-15 13:57:08 +00:00
mountver Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
multipath Report disk addition errors on add or create subcommand. 2017-01-20 13:49:04 +00:00
nop Make geom_nop(4) collect statistics on all types of BIOs, not just 2015-10-10 09:03:31 +00:00
part The hard drive media device path contains the size of the partition, 2017-09-02 07:04:06 +00:00
raid g_raid: Prevent tasters from attempting excessively large reads 2017-01-12 06:58:31 +00:00
raid3 Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
sched Cleanup unnecessary semicolons from the kernel. 2016-04-10 23:07:00 +00:00
shsec Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
stripe Use g_wither_provider() where applicable. 2016-09-23 21:29:40 +00:00
uzip Add MD_VERIFY option to enable O_VERIFY in open for vnode type. 2017-05-31 21:18:11 +00:00
vinum Fix logic error in gvinum's gv_set_sd_state() 2017-01-08 17:56:54 +00:00
virstor g_virstor.h: macro parenthesization 2017-06-30 22:01:18 +00:00
zero
geom_aes.c
geom_bsd_enc.c sys/geom: spelling fixes in comments. 2016-04-29 20:56:58 +00:00
geom_bsd.c Mark geom classes as deprecated. 2017-08-09 16:15:24 +00:00
geom_ccd.c sys/geom: spelling fixes in comments. 2016-04-29 20:56:58 +00:00
geom_ctl.c geom: unsign some types to match their definitions and avoid overflows. 2016-04-27 15:10:40 +00:00
geom_ctl.h
geom_dev.c Eliminate useless adjustments of aliased device. 2017-08-07 22:42:46 +00:00
geom_disk.c Expose API to allow disks to ask for alias names in devfs. 2017-08-07 21:12:38 +00:00
geom_disk.h Expose API to allow disks to ask for alias names in devfs. 2017-08-07 21:12:38 +00:00
geom_dump.c Add aliasing concept to geom. 2017-08-07 21:12:28 +00:00
geom_event.c Remove asserts that Giant is not held on entrance into geom KPI, which 2016-05-20 08:22:20 +00:00
geom_flashmap.c - Allow different slicers for different flash types to be registered 2017-02-22 10:21:39 +00:00
geom_fox.c Also provide a warning for geom_fox. 2017-08-09 16:37:37 +00:00
geom_int.h
geom_io.c Add BUF_TRACKING and FULL_BUF_TRACKING buffer debugging 2016-10-31 23:09:52 +00:00
geom_kern.c Remove unneeded Giant locking around kthreads creation. 2016-05-20 08:28:11 +00:00
geom_map.c build: Unbreak LINT 2016-12-21 01:39:11 +00:00
geom_mbr_enc.c sys/geom: spelling fixes in comments. 2016-04-29 20:56:58 +00:00
geom_mbr.c Mark geom classes as deprecated. 2017-08-09 16:15:24 +00:00
geom_redboot.c [geom_redboot] Extend geom_redboot to handle non-zero fis offset. 2016-10-04 16:35:38 +00:00
geom_slice.c
geom_slice.h
geom_subr.c Let g_access() log the actual error number. 2017-08-27 12:24:25 +00:00
geom_sunlabel_enc.c sys/geom: spelling fixes in comments. 2016-04-29 20:56:58 +00:00
geom_sunlabel.c Mark geom classes as deprecated. 2017-08-09 16:15:24 +00:00
geom_vfs.c Fix typo. 2017-05-18 08:25:07 +00:00
geom_vfs.h
geom_vol_ffs.c Mark geom classes as deprecated. 2017-08-09 16:15:24 +00:00
geom.h Add aliasing concept to geom. 2017-08-07 21:12:28 +00:00
notes