diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-03 16:48:43 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-03 16:49:34 +0900 |
| commit | 591a60bac99b17ba0f345ee93057ea5a148837fd (patch) | |
| tree | 866709899c4b879150a12483cff9bfe2d8f764cb | |
| parent | 5093a06026b0f4abe6b16ccf5381a19caf594166 (diff) | |
internal/pkg: per-cache SCHED_IDLE
This is cleaner than setting it globally, and is impossible to race.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | cmd/mbf/main.go | 6 | ||||
| -rw-r--r-- | internal/pkg/exec.go | 5 | ||||
| -rw-r--r-- | internal/pkg/pkg.go | 4 |
3 files changed, 9 insertions, 6 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go index 17ae1b05..5ae0d836 100644 --- a/cmd/mbf/main.go +++ b/cmd/mbf/main.go @@ -88,10 +88,12 @@ func main() { } else if base, err = check.NewAbs(flagBase); err != nil { return } - cache, err = pkg.Open(ctx, msg, 0, flagCures, base) + + var flags int if flagIdle { - pkg.SetSchedIdle = true + flags &= pkg.CSchedIdle } + cache, err = pkg.Open(ctx, msg, flags, flagCures, base) return }).Flag( diff --git a/internal/pkg/exec.go b/internal/pkg/exec.go index 6b6964fd..fcbf1245 100644 --- a/internal/pkg/exec.go +++ b/internal/pkg/exec.go @@ -40,9 +40,6 @@ type ExecPath struct { W bool } -// SetSchedIdle is whether to set [ext.SCHED_IDLE] scheduling priority. -var SetSchedIdle bool - // GetArtifactFunc is the function signature of [FContext.GetArtifact]. type GetArtifactFunc func(Artifact) (*check.Absolute, unique.Handle[Checksum]) @@ -427,7 +424,6 @@ func (a *execArtifact) makeContainer( z.ParentPerm = 0700 z.HostNet = hostNet z.Hostname = "cure" - z.SetScheduler = SetSchedIdle z.SchedPolicy = ext.SCHED_IDLE if z.HostNet { z.Hostname = "cure-net" @@ -609,6 +605,7 @@ func (a *execArtifact) cure(f *FContext, hostNet bool) (err error) { ); err != nil { return } + z.SetScheduler = f.cache.flags&CSchedIdle != 0 var status io.Writer if status, err = f.GetStatusWriter(); err != nil { diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go index a542f3d2..0c882bea 100644 --- a/internal/pkg/pkg.go +++ b/internal/pkg/pkg.go @@ -503,6 +503,10 @@ const ( // This behaviour significantly reduces performance and is not recommended // outside of testing a custom [Artifact] implementation. CValidateKnown = 1 << iota + + // CSchedIdle arranges for the [ext.SCHED_IDLE] scheduling priority to be + // set for [KindExec] and [KindExecNet] containers. + CSchedIdle ) // Cache is a support layer that implementations of [Artifact] can use to store |
