freebsd-nq/sys/geom
Konstantin Belousov fd99699d7e Fix aggregating geoms for BIO_SPEEDUP.
If the bio was split into several bios going down, completion computes
bio_completed of the original bio as sum of the bio_completes of the
splits.  For BIO_SETUP, bio_length means something different than the
length. it is the requested speedup amount, and is duplicated into the
splits, which is in fact reasonable, since we cannot know how the
previous activity was distributed among subordinate geoms.  Obviously,
the sum of n bio_length is greater than bio_length for n > 1, which
triggers assert that bio_length >= bio_completed for e.g. geom_stripe
and geom_raid3.

Fix this by reassigning bio_completed from bio_length for completed
BIO_SPEEDED, I do not think it really mattters what we return in
bio_completed.

Reported and tested by:	pho
Reviewed by:	imp
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D23380
2020-01-27 13:15:16 +00:00
..
bde
cache GEOM: Reduce unnecessary log interleaving with sbufs 2019-08-07 19:28:35 +00:00
concat Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
eli Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
gate Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
journal Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
label GEOM label: strip leading/trailing space synthesizing devfs names 2020-01-18 03:33:44 +00:00
linux_lvm Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
mirror Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
mountver Fix GEOM_MOUNTVER orphanization. 2019-12-29 17:10:21 +00:00
multipath gmultipath: add ATF tests 2019-12-06 00:12:14 +00:00
nop Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
part Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
raid Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
raid3 Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
shsec Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
stripe Fix aggregating geoms for BIO_SPEEDUP. 2020-01-27 13:15:16 +00:00
uzip Fix GEOM_UZIP orphanization. 2019-12-27 21:44:13 +00:00
vinum Reimplement gvinum orphanization. 2019-12-27 01:36:53 +00:00
virstor Fix GEOM_VIRSTOR orphanization. 2019-12-29 19:21:29 +00:00
zero
geom_bsd_enc.c
geom_ccd.c
geom_ctl.c We don't even need Giant here. It isn't protecting anything internal 2019-11-23 23:44:00 +00:00
geom_ctl.h
geom_dbg.h GEOM: Reduce unnecessary log interleaving with sbufs 2019-08-07 19:28:35 +00:00
geom_dev.c Block ioctls for dying GEOM_DEV instances. 2019-12-06 03:46:38 +00:00
geom_disk.c Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
geom_disk.h Add GEOM attribute to report physical device name, and report it 2019-11-09 17:30:19 +00:00
geom_dump.c Wrap g_trace() into a macro to avoid unneeded calls. 2019-12-05 04:52:19 +00:00
geom_event.c Retire nstart/nend counters. 2019-12-30 00:46:10 +00:00
geom_flashmap.c
geom_flashmap.h
geom_int.h Remove duplicate g_debugflags declaration. 2019-12-05 15:07:32 +00:00
geom_io.c Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
geom_kern.c Mark some more hot global variables with __read_mostly. 2019-12-04 21:26:03 +00:00
geom_map.c
geom_redboot.c
geom_slice.c Pass BIO_SPEEDUP through all the geom layers 2020-01-17 01:15:55 +00:00
geom_slice.h
geom_subr.c Fix aggregating geoms for BIO_SPEEDUP. 2020-01-27 13:15:16 +00:00
geom_vfs.c Use buf to send speedup 2020-01-17 01:16:19 +00:00
geom_vfs.h
geom.h Retire nstart/nend counters. 2019-12-30 00:46:10 +00:00
notes