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

Reply via email to