diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2023-01-02 17:49:22 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2023-01-19 11:26:54 +0100 |
| commit | 4ac68196f128fe22ddd1e5b57d021c70f19e4894 (patch) | |
| tree | 2afb6304deb57af561271568c4adf58d8ba9584a /syz-ci/jobs.go | |
| parent | 4bd62a18b32a876e5ef2b024e454ccf793849050 (diff) | |
syz-ci: move build semaphore closer to builds
Currently it's held during the whole job processing, which can take too
long.
Adjust it so that it's only taken when we really begin to build the
kernel or syzkaller.
Diffstat (limited to 'syz-ci/jobs.go')
| -rw-r--r-- | syz-ci/jobs.go | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/syz-ci/jobs.go b/syz-ci/jobs.go index ed999a5ff..7f19a862f 100644 --- a/syz-ci/jobs.go +++ b/syz-ci/jobs.go @@ -79,7 +79,7 @@ loop: } select { case <-jobTicker.C: - if len(kernelBuildSem) != 0 { + if buildSem.Available() == 0 { // If normal kernel build is in progress (usually on start), don't query jobs. // Otherwise we claim a job, but can't start it for a while. continue loop @@ -250,13 +250,6 @@ func (jp *JobProcessor) pollJobs() { } func (jp *JobProcessor) processJob(job *Job) { - select { - case kernelBuildSem <- struct{}{}: - case <-jp.stop: - return - } - defer func() { <-kernelBuildSem }() - req := job.req log.Logf(0, "starting job %v type %v for manager %v on %v/%v", req.ID, req.Type, req.Manager, req.KernelRepo, req.KernelBranch) @@ -439,7 +432,8 @@ func (jp *JobProcessor) bisect(job *Job, mgrcfg *mgrconfig.Config) error { Syz: req.ReproSyz, C: req.ReproC, }, - Manager: mgrcfg, + Manager: mgrcfg, + BuildSemaphore: buildSem, } res, err := bisect.Run(cfg) @@ -499,7 +493,7 @@ func (jp *JobProcessor) bisect(job *Job, mgrcfg *mgrconfig.Config) error { func (jp *JobProcessor) testPatch(job *Job, mgrcfg *mgrconfig.Config) error { req, resp, mgr := job.req, job.resp, job.mgr - env, err := instance.NewEnv(mgrcfg) + env, err := instance.NewEnv(mgrcfg, buildSem) if err != nil { return err } |
