On Wed, Dec 15, 2021 at 10:12:28AM -0800, Jakub Kicinski wrote: > Changes to bpf.h tend to clog up our build systems. The netdev/bpf > build bot does incremental builds to save time (reusing the build > directory to only rebuild changed objects). > > This is the rough breakdown of how many objects needs to be rebuilt > based on file touched: > > kernel.h 40633 > bpf.h 17881 > bpf-cgroup.h 17875 > skbuff.h 10696 > bpf-netns.h 7604 > netdevice.h 7452 > filter.h 5003 > tcp.h 4048 > sock.h 4959 > > As the stats show touching bpf.h is _very_ expensive. > > Bulk of the objects get rebuilt because MM includes cgroup headers. > Luckily bpf-cgroup.h does not fundamentally depend on bpf.h so we > can break that dependency and reduce the number of objects. > > With the patches applied touching bpf.h causes 5019 objects to be rebuilt > (17881 / 5019 = 3.56x). That's pretty much down to filter.h plus noise. > > v2: > Try to make the new headers wider in scope. Collapse bpf-link and > bpf-cgroup-types into one header, which may serve as "BPF kernel > API" header in the future if needed. Rename bpf-cgroup-storage.h > to bpf-inlines.h. > > Add a fix for the s390 build issue. > > v3: https://lore.kernel.org/all/20211215061916.715513-1-kuba@xxxxxxxxxx/ > Merge bpf-includes.h into bpf.h. > Remember to git format-patch after fixing build issues. > > v4: > Change course - break off cgroup instead of breaking off bpf. Nice. I think this approach is the best so far. I'll wait a bit for 0-bot to test it with different configs and BPF CI to catch up.