Page MenuHomeFreeBSD

Fix aggregating geoms for BIO_SPEEDUP.
ClosedPublic

Authored by kib on Jan 27 2020, 8:23 AM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 24 2024, 11:26 AM
Unknown Object (File)
Dec 22 2023, 10:37 PM
Unknown Object (File)
Dec 20 2023, 1:34 PM
Unknown Object (File)
Nov 11 2023, 5:52 AM
Unknown Object (File)
Oct 3 2023, 1:01 PM
Unknown Object (File)
Aug 22 2023, 9:20 PM
Unknown Object (File)
Aug 7 2023, 8:10 PM
Unknown Object (File)
Aug 7 2023, 8:09 PM
Subscribers

Details

Summary

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

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Jan 27 2020, 8:54 AM
This revision was automatically updated to reflect the committed changes.