Thanks Christoph for the very clear explanation, I think that it was a piece which was missing for all of us!
B.R. Yannis On Thu, 10 Dec 2020 at 12:07, Christoph Böhmwalder < christoph.boehmwal...@linbit.com> wrote: > Hi Pierre, > > As much as we may want it, DRBD's coccinelle-based compat system is not > a general purpose solution. We can't guarantee that DRBD will build for > any given kernel – there is simply too much going on in the block layer > and other parts of the kernel, so that we cannnot possibly cover for all > those different combinations (and still expect DRBD to work as intended). > > So we have made a bit of a compromise: we build and test DRBD for a > defined set of kernels. These are deemed "most interesting", according > to the opinion of LINBIT and our customers. Namely, we currently build > for these 125 kernels on the amd64 architecture at time of writing: > > Distribution | Kernel Version > ------------ | -------------- > amazonlinux2.0-amd64 | 4.14.128-112.105.amzn2 > debian-buster-amd64 | 4.19.0-5; 4.19.0-6; 4.19.0-8 > debian-jessie-amd64 | 3.16.0-4; 3.16.0-5; 3.16.0-6 > debian-stretch-amd64 | 4.9.0-6; 4.9.0-7; 4.9.0-8; 4.9.0-9; 4.9.0-11 > oracle6.0-amd64 | 4.1.12-124.26.3.el6uek; 4.1.12-124.21.1.el6uek > oracle7.0-amd64 | 4.14.35-1844.1.3.el7uek; 4.1.12-94.3.9.el7uek; > 4.1.12-124.26.10.el7uek; 4.14.35-1902.4.8.el7uek; 4.14.35-1818.3.3.el7uek > oracle8.0-amd64 | 5.4.17-2011.0.7.el8uek > rhel6.10-amd64 | 2.6.32-754.el6 > rhel6.6-amd64 | 2.6.32-504.el6 > rhel6.7-amd64 | 2.6.32-573.1.1.el6 > rhel6.8-amd64 | 2.6.32-642.1.1.el6 > rhel6.9-amd64 | 2.6.32-696.el6; 2.6.32-696.23.1.el6; > 2.6.32-696.30.1.el6 > rhel7-xen-amd64 | 4.9.188-35.el7; 4.9.199-35.el7; 4.9.206-36.el7; > 4.9.212-36.el7; 4.9.215-36.el7 > rhel7.0-amd64 | 3.10.0-123.20.1.el7 > rhel7.1-amd64 | 3.10.0-229.1.2.el7 > rhel7.2-amd64 | 3.10.0-327.el7 > rhel7.3-amd64 | 3.10.0-514.6.2.el7; 3.10.0-514.36.5.el7 > rhel7.4-amd64 | 3.10.0-693.el7; 3.10.0-693.17.1.el7; > 3.10.0-693.21.1.el7 > rhel7.5-amd64 | 3.10.0-862.el7 > rhel7.6-amd64 | 3.10.0-957.el7 > rhel7.7-amd64 | 3.10.0-1049.el7; 3.10.0-1062.el7 > rhel7.8-amd64 | 3.10.0-1127.el7 > rhel7.9-amd64 | 3.10.0-1160.el7 > rhel8.0-amd64 | 4.18.0-80.1.2.el8_0 > rhel8.1-amd64 | 4.18.0-147.el8 > rhel8.2-amd64 | 4.18.0-193.el8 > rhel8.3-amd64 | 4.18.0-240.1.1.el8_3 > sles11-sp4-amd64 | 3.0.101-108.13.1 > sles12-sp2-amd64 | 4.4.74-92.38.1 > sles12-sp3-amd64 | 4.4.92-6.30.1 > sles12-sp4-amd64 | 4.12.14-95.3.1 > sles12-sp5-amd64 | 4.12.14-120.1 > sles15-sp0-amd64 | 4.12.14-25.25.1 > sles15-sp1-amd64 | 4.12.14-197.29 > sles15-sp2-amd64 | 5.3.18-22.2 > ubuntu-bionic-amd64 | ✗ 5.3.0-1034-aws; ✗ 5.3.0-1035-aws; > 5.4.0-1025-aws; 5.4.0-1028-aws; 5.4.0-1029-aws; 5.4.0-1030-aws; > 4.15.0-1007-aws > ubuntu-bionic-amd64 | ✗ 5.3.0-1035-azure; ✗ 5.4.0-1023-azure; > 5.4.0-1025-azure; 5.4.0-1026-azure; 5.4.0-1031-azure; 5.4.0-1032-azure; > 4.15.0-1009-azure > ubuntu-bionic-amd64 | 4.15.0-112-lowlatency > ubuntu-bionic-amd64 | ✗ 4.15.0-118; ✗ 4.15.0-121; 4.15.0-122; > 4.15.0-123; 4.15.0-124; 4.15.0-126; 4.15.0-20 > ubuntu-focal-amd64 | ✗ 5.4.0-1022-aws; ✗ 5.4.0-1024-aws; > 5.4.0-1025-aws; 5.4.0-1028-aws; 5.4.0-1029-aws; 5.4.0-1030-aws; > 5.4.0-1009-aws > ubuntu-focal-amd64 | ✗ 5.4.0-1022-azure; ✗ 5.4.0-1023-azure; > 5.4.0-1025-azure; 5.4.0-1026-azure; 5.4.0-1031-azure; 5.4.0-1032-azure; > 5.4.0-1010-azure > ubuntu-focal-amd64 | ✗ 5.4.0-51; ✗ 5.4.0-52; 5.4.0-48; 5.4.0-53; > 5.4.0-54; 5.4.0-56; 5.4.0-26 > ubuntu-trusty-amd64 | 4.4.0-1022-aws > ubuntu-trusty-amd64 | 3.13.0-129; 3.13.0-133; 3.13.0-139; 3.13.0-142; > 3.13.0-149 > ubuntu-xenial-amd64 | 4.4.0-1092-aws; 4.4.0-1098-aws; 4.4.0-1111-aws; > 4.4.0-1114-aws; 4.4.0-1117-aws > ubuntu-xenial-amd64 | 4.13.0-1018-azure; 4.15.0-1036-azure; > 4.15.0-1040-azure > ubuntu-xenial-amd64 | ✗ 4.4.0-190; 4.4.0-193; 4.4.0-194; 4.15.0-120; > 4.15.0-123; 4.4.0-197 > xenserver6.5-amd64 | 3.10.41-323 > xenserver7.1-amd64 | 4.4.27-572.565306 > xenserver7.2-amd64 | 4.4.52-2.1 > xenserver8.0-amd64 | 4.19.19-5.0.8 > > > Using one of these kernels will give you the smoothest experience when > building DRBD. We actually pre-compute all compat patches for these > kernels and put them in our release tarballs. This means that, if one of > these kernels is detected, you will not need spatch at all and just need > to apply a plain patch. > > For a lucky set of other kernels, we have made SPAAS (spatch as a > service). This sends a "fingerprint" of your currently running kernel's > capabilities to LINBIT, where we can then build a compat patch > specifically for that kernel. This also works sometimes, but again, we > cannot possibly guarantee that this works for any given kernel (not to > mention test it so that it actually does the right thing). > > So, in conclusion, you have 2 options: > > a) Use one of the kernels we already support > b) Figure out how to have DRBD build for your kernel yourself (it's not > fun, take my word for it) > c) Become a LINBIT customer and we will gladly do it for you :) > > > Regarding this question: > > > PS: Coccinelle is only needed for backwards compatibility, right? Is > there a way to avoid its usage while using a recent enough kernel? > > Yes, *theoretically* DRBD should always build against the latest kernel > release without needing compat patches. But as I already mentioned, > there is a lot going on in the kernel, especially in the block layer, > and since we support so many kernels it is a huge piece of work to patch > back any larger modifications. > > So it is perfectly possible that we are lagging behind a few versions. I > guess you can try finding the "sweet spot" where it works without > patches. This should be somwhere around 5.9 at the moment. > > Hope this helps and isn't too disappointing :) > > -- > Christoph Böhmwalder > LINBIT | Keeping the Digital World Running > DRBD HA — Disaster Recovery — Software defined Storage > > On 05.12.20 04:21, Pierre-Philipp Braun wrote: > > Hello > > > > I am having troubles building the v9 module although I tried with > various releases and against many kernel versions. > > > > With branch drbd-9.0 and drbd-9.0.26-0rc2 against stock Ubuntu > 5.8.0-31-generic > > > > In file included from /root/tp/drbd/drbd/drbd_main.c:19: > > ./include/linux/vermagic.h:6:2: error: #error "This header can be > included from kernel/module.c or *.mod.c only" > > 6 | #error "This header can be included from kernel/module.c or > *.mod.c only" > > | ^~~~~ > > > > With release drbd-9.0.25-2 against stock Ubuntu 5.8.0-31-generic > > > > /root/tp/drbd-9.0.25-2/drbd/drbd_bitmap.c: In function > 'bm_realloc_pages': > > /root/tp/drbd-9.0.25-2/drbd/drbd_bitmap.c:368:15: error: too many > arguments to function '__vmalloc' > > 368 | new_pages = __vmalloc(bytes, > > | ^~~~~~~~~ > > > > With branch drbd-9.0 and drbd-9.0.26-0rc2 against vanilla+reiser4 > linux-5.9.11 > > > > SPATCH 5470857a83aa446cd991bcef3cdf804a 5.9.11.xenreiser4 > > make[3]: *** [Makefile:177: > drbd-kernel-compat/cocci_cache/5470857a83aa446cd991bcef3cdf804a/compat.patch] > Error 1 > > make[2]: *** [/root/tp/drbd/drbd/Kbuild:135: > /root/tp/drbd/drbd/drbd-kernel-compat/compat.patch] Error 2 > > make[1]: *** [Makefile:1784: /root/tp/drbd/drbd] Error 2 > > make: *** [Makefile:132: kbuild] Error 2 > > > > With release drbd-9.0.25-2 against vanilla+reiser4 linux-5.9.11 > > > > GENPATCHNAMES 5.9.11.xenreiser4 > > cat: drbd-kernel-compat/patches/claim_disk__no_link__no_claim.patch: No > such file or directory > > make[3]: *** [Makefile:177: > drbd-kernel-compat/cocci_cache/a89eb518bd21910d66ac3e0b5527f221/compat.patch] > Error 1 > > make[2]: *** [/root/tp/drbd-9.0.25-2/drbd/Kbuild:135: > /root/tp/drbd-9.0.25-2/drbd/drbd-kernel-compat/compat.patch] Error 2 > > make[1]: *** [Makefile:1784: /root/tp/drbd-9.0.25-2/drbd] Error 2 > > make: *** [Makefile:132: kbuild] Error 2 > > > > What am I missing? That's really hard to built and assistance would be > much appreciated. > > > > PS: Coccinelle is only needed for backwards compatibility, right? Is > there a way to avoid its usage while using a recent enough kernel? > > > > Thanks > > > _______________________________________________ > Star us on GITHUB: https://github.com/LINBIT > drbd-user mailing list > drbd-user@lists.linbit.com > https://lists.linbit.com/mailman/listinfo/drbd-user >
_______________________________________________ Star us on GITHUB: https://github.com/LINBIT drbd-user mailing list drbd-user@lists.linbit.com https://lists.linbit.com/mailman/listinfo/drbd-user