v4.0-->v4.1-rc1...-->v4.1-rc8-->v4.2 (merge window two weeks)
- Design
- early review -- mail list
- wider review -- -next tree
- rebase and rebase again -- low priority
- go into mainline
- stable release - if critical
- Longterm maintain
-
why start this?
-
do what?
- test latest kernel
- bisect changes
- report changes
-
category
- build(include code static analysis, smatch, sparse..)
- boot
- performance
-
show report sample (from kernel mail list)
400+ trees included
- mainline (linus tree)
- maintainers tree (vfs, ext4, kvm, net...)
- developer's tree (...)
A---B---C topic
/
D---E---F---G master
TO=>
A---B---C topic
/ \
D---E---F---G---H master
test each rc releases, while issues:
- not in time, rc1 too many commits
- test machines are mostly idle
test and report TODAY's change => 0Day
- test latest code
- bisect - find the FIRST bad commit (and report to developer or mail lists)
- only test mainline is not enough
- 400+ git trees => impossible to test one by one
git hourly merge =>
v3.12-rc5
|------------devel-hourly-2013101501
|
|------------devel-hourly-2013101502
|
|------------devel-hourly-2013101503
|
|------------devel-hourly-2013101504
...
how to find first bad commit:
---A---B---C---D---E---F---G---H---I---J---K HEAD
(refer to kernel mail list to see the pictures)
- O -- hourly merged branch HEAD
-
- -- hourly merged branch BASE
- too many test each day, can not bisect one by one
- bisect take long time (2 - 10 hours, even more)
Should choose the bisect items
-
change percent
-
variation
variation = (X + Z) / (X + Y + Z)
-
run time
less run time, faster for bisect
-
stats field weight
-
timeliness
today change > few days ago change
Score based priority: (by experience)
change percent 0-20
variation 0-10
run time 0-10
stats field weight 0-30
timeliness 0-10
