diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-07-18 15:04:58 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2025-07-22 12:06:00 +0000 |
| commit | 343f8ef4bca603a6a280812c4c6597825fcc63c5 (patch) | |
| tree | d213da8d163bfa6e393c711e3ab7960374b6211d /syz-cluster | |
| parent | af30dea9cea0f95c6651fb7ce092f68eedfaec48 (diff) | |
syz-cluster: remember LKML series tags
Sometimes the patch series directly hint at the kernel tree they should
be applied to. Extract and remember this information.
Diffstat (limited to 'syz-cluster')
| -rw-r--r-- | syz-cluster/pkg/api/api.go | 1 | ||||
| -rw-r--r-- | syz-cluster/pkg/controller/api_test.go | 6 | ||||
| -rw-r--r-- | syz-cluster/pkg/db/entities.go | 19 | ||||
| -rw-r--r-- | syz-cluster/pkg/db/migrations/4_add_series_subject_tags.down.sql | 1 | ||||
| -rw-r--r-- | syz-cluster/pkg/db/migrations/4_add_series_subject_tags.up.sql | 1 | ||||
| -rw-r--r-- | syz-cluster/pkg/service/series.go | 8 | ||||
| -rw-r--r-- | syz-cluster/series-tracker/main.go | 2 |
7 files changed, 27 insertions, 11 deletions
diff --git a/syz-cluster/pkg/api/api.go b/syz-cluster/pkg/api/api.go index 128be02ba..5483513af 100644 --- a/syz-cluster/pkg/api/api.go +++ b/syz-cluster/pkg/api/api.go @@ -103,6 +103,7 @@ type Series struct { Cc []string `json:"cc"` Version int `json:"version"` Link string `json:"link"` + SubjectTags []string `json:"subject_tags"` PublishedAt time.Time `json:"published_at"` Patches []SeriesPatch `json:"patches"` } diff --git a/syz-cluster/pkg/controller/api_test.go b/syz-cluster/pkg/controller/api_test.go index 9e709e089..1c1c8de9f 100644 --- a/syz-cluster/pkg/controller/api_test.go +++ b/syz-cluster/pkg/controller/api_test.go @@ -5,11 +5,12 @@ package controller import ( "bytes" + "testing" + "time" + "github.com/google/syzkaller/syz-cluster/pkg/api" "github.com/google/syzkaller/syz-cluster/pkg/app" "github.com/stretchr/testify/assert" - "testing" - "time" ) func TestAPIGetSeries(t *testing.T) { @@ -108,6 +109,7 @@ var testSeries = &api.Series{ Version: 2, PublishedAt: time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC), Cc: []string{"email"}, + SubjectTags: []string{"tag"}, Patches: []api.SeriesPatch{ { Seq: 1, diff --git a/syz-cluster/pkg/db/entities.go b/syz-cluster/pkg/db/entities.go index 77c066b5e..b1ffc6949 100644 --- a/syz-cluster/pkg/db/entities.go +++ b/syz-cluster/pkg/db/entities.go @@ -4,18 +4,21 @@ package db import ( - "cloud.google.com/go/spanner" "time" + + "cloud.google.com/go/spanner" ) type Series struct { - ID string `spanner:"ID"` - ExtID string `spanner:"ExtID"` - AuthorName string `spanner:"AuthorName"` - AuthorEmail string `spanner:"AuthorEmail"` - Title string `spanner:"Title"` - Link string `spanner:"Link"` - Version int64 `spanner:"Version"` + ID string `spanner:"ID"` + ExtID string `spanner:"ExtID"` + AuthorName string `spanner:"AuthorName"` + AuthorEmail string `spanner:"AuthorEmail"` + Title string `spanner:"Title"` + Link string `spanner:"Link"` + Version int64 `spanner:"Version"` + // In LKML patches, there are often hints at the target tree for the patch. + SubjectTags []string `spanner:"SubjectTags"` PublishedAt time.Time `spanner:"PublishedAt"` // TODO: we could ger rid of the field by using slightly more complicated SQL queries. LatestSessionID spanner.NullString `spanner:"LatestSessionID"` diff --git a/syz-cluster/pkg/db/migrations/4_add_series_subject_tags.down.sql b/syz-cluster/pkg/db/migrations/4_add_series_subject_tags.down.sql new file mode 100644 index 000000000..d63028aa2 --- /dev/null +++ b/syz-cluster/pkg/db/migrations/4_add_series_subject_tags.down.sql @@ -0,0 +1 @@ +ALTER TABLE Series DROP COLUMN SubjectTags; diff --git a/syz-cluster/pkg/db/migrations/4_add_series_subject_tags.up.sql b/syz-cluster/pkg/db/migrations/4_add_series_subject_tags.up.sql new file mode 100644 index 000000000..a049fdde6 --- /dev/null +++ b/syz-cluster/pkg/db/migrations/4_add_series_subject_tags.up.sql @@ -0,0 +1 @@ +ALTER TABLE Series ADD COLUMN SubjectTags ARRAY<STRING(512)>; diff --git a/syz-cluster/pkg/service/series.go b/syz-cluster/pkg/service/series.go index 6583306ce..d1ace9b09 100644 --- a/syz-cluster/pkg/service/series.go +++ b/syz-cluster/pkg/service/series.go @@ -63,6 +63,13 @@ func (s *SeriesService) UploadSeries(ctx context.Context, series *api.Series) (* PublishedAt: series.PublishedAt, Cc: series.Cc, } + for _, tag := range series.SubjectTags { + const tageSizeLimit = 511 + if len(tag) > tageSizeLimit { + tag = tag[:tageSizeLimit] + } + seriesObj.SubjectTags = append(seriesObj.SubjectTags, tag) + } err := s.seriesRepo.Insert(ctx, seriesObj, func() ([]*db.Patch, error) { var ret []*db.Patch for _, patch := range series.Patches { @@ -121,6 +128,7 @@ func (s *SeriesService) getSeries(ctx context.Context, Cc: series.Cc, PublishedAt: series.PublishedAt, Link: series.Link, + SubjectTags: series.SubjectTags, } for _, patch := range patches { var body []byte diff --git a/syz-cluster/series-tracker/main.go b/syz-cluster/series-tracker/main.go index b8638d897..d6f28a497 100644 --- a/syz-cluster/series-tracker/main.go +++ b/syz-cluster/series-tracker/main.go @@ -155,9 +155,9 @@ func (sf *SeriesFetcher) handleSeries(ctx context.Context, series *lore.Series, apiSeries := &api.Series{ ExtID: series.MessageID, AuthorEmail: first.Author, - // TODO: set Cc. Title: series.Subject, Version: series.Version, + SubjectTags: series.Tags, Link: "https://lore.kernel.org/all/" + series.MessageID, PublishedAt: date, } |
