From 956deb0fe8195c7a0c38c66a5a8cc1e95c2c245e Mon Sep 17 00:00:00 2001 From: Sergey Gorenko Date: Tue, 7 Jul 2020 14:31:31 +0300 Subject: [PATCH] LU-13761 o2ib: Fix compilation with MOFED 5.1 A new argument was added to rdma_reject() in MOFED 5.1 and Linux 5.8. Add a cofigure check and support both versions of rdma_reject(). Test-Parameters: trivial Signed-off-by: Sergey Gorenko Change-Id: I2b28991f335658b651b21a09899b7b17ab2a9d57 Reviewed-on: https://review.whamcloud.com/39323 Reviewed-by: Neil Brown Reviewed-by: Alexey Lyashkov Reviewed-by: James Simmons Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lnet/autoconf/lustre-lnet.m4 | 23 +++++++++++++++++++++++ lnet/klnds/o2iblnd/o2iblnd_cb.c | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 318036b..9554330 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -522,6 +522,29 @@ AS_IF([test $ENABLEO2IB != "no"], [ # 5.1 LN_IB_SG_DMA_ADDRESS_EXISTS + # A reason argument was added to rdma_reject() in Linux 5.8, + # commit 8094ba0ace7f6cd1e31ea8b151fba3594cadfa9a + LB_CHECK_COMPILE([if 4arg 'rdma_reject' exists], + rdma_reject, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + #include + #include + ],[ + rdma_reject(NULL, NULL, 0, 0); + ],[ + AC_DEFINE(HAVE_RDMA_REJECT_4ARGS, 1, + [rdma_reject has 4 arguments]) + ]) + EXTRA_CHECK_INCLUDE="" AC_DEFUN([LN_CONFIG_O2IB_SRC], []) AC_DEFUN([LN_CONFIG_O2IB_RESULTS], []) diff --git a/lnet/klnds/o2iblnd/o2iblnd_cb.c b/lnet/klnds/o2iblnd/o2iblnd_cb.c index 49433c1..f3c1a4e 100644 --- a/lnet/klnds/o2iblnd/o2iblnd_cb.c +++ b/lnet/klnds/o2iblnd/o2iblnd_cb.c @@ -2293,7 +2293,11 @@ kiblnd_reject(struct rdma_cm_id *cmid, struct kib_rej *rej) { int rc; +#ifdef HAVE_RDMA_REJECT_4ARGS + rc = rdma_reject(cmid, rej, sizeof(*rej), IB_CM_REJ_CONSUMER_DEFINED); +#else rc = rdma_reject(cmid, rej, sizeof(*rej)); +#endif if (rc != 0) CWARN("Error %d sending reject\n", rc); -- 1.8.3.1