Page MenuHomeFreeBSD

geom_io: Shift to pause_sbt to eliminate bogus min and update comment.
ClosedPublic

Authored by imp on May 23 2024, 4:16 PM.
Tags
None
Referenced Files
Unknown Object (File)
May 25 2024, 9:16 AM
Unknown Object (File)
May 24 2024, 6:59 PM
Unknown Object (File)
May 24 2024, 6:32 PM
Unknown Object (File)
May 24 2024, 6:28 PM
Unknown Object (File)
May 24 2024, 6:22 PM
Unknown Object (File)
May 24 2024, 6:13 PM
Unknown Object (File)
May 24 2024, 3:41 PM
Subscribers
None

Details

Summary

Update to eliminate bogus min to ensure 0 was never passed to
pause. Instead, requrest 1ms with an 'infinite' precision, which
defaults to whatever the underlying time counter can do. This should
ensure we run fairly quickly to start processing done events, while
still giving a small pause for the system to catch its breath. This rate
limiter still is less than ideal, and this commit doesn't change
that. It should really have no functional change: it just uses a better
interface to express the desired sleep.

Sponsored by: Netflix

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 57867
Build 54755: arc lint + arc unit

Event Timeline

imp requested review of this revision.May 23 2024, 4:16 PM
imp created this revision.
sys/geom/geom_io.c
813

I think "or one tick" is no longer true? (Or at least I still think of "tick" as a hardclock tick). The new code seems to just say "1ms".

sys/geom/geom_io.c
813

Ah, timeout code rounds up

if ((flags & C_HARDCLOCK) != 0 && sbt < tick_sbt)
        sbt = tick_sbt;

but only for a hard tick. Since we're not passinc C_HARDCLOCK into this, it won't do that so that's a good catch. It is just 1ms, subject to the underlying timer's ability to deliver since we don't pass in a precision required..

This revision is now accepted and ready to land.May 24 2024, 7:24 AM