From ba90d730b671fc781507e02aea3e0c2a24e7c269 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Wed, 1 Apr 2015 15:43:27 -0700 Subject: [PATCH] NFSoRDMA: backport for RHEL 6.5 and 6.6 Signed-off-by: Jeff Becker --- ofed_scripts/gen-compat-config.sh | 5 ++ patches/0027-BACKPORT-nfsrdma-SLES11SP3.patch | 12 ++++- patches/0028-BACKPORT-nfsrdma-RHEL6.6.patch | 49 +++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 patches/0028-BACKPORT-nfsrdma-RHEL6.6.patch diff --git a/ofed_scripts/gen-compat-config.sh b/ofed_scripts/gen-compat-config.sh index ab01d72..59d6b55 100755 --- a/ofed_scripts/gen-compat-config.sh +++ b/ofed_scripts/gen-compat-config.sh @@ -210,6 +210,7 @@ if [[ ${CONFIG_COMPAT_RHEL_6_3} = "y" ]]; then set_config CONFIG_COMPAT_XPRT_ALLOC_4PARAMS y set_config CONFIG_COMPAT_XPRT_RESERVE_XPRT_CONG_2PARAMS y set_config CONFIG_COMPAT_FRAGS_SKB y + set_config CONFIG_COMPAT_KMAP_2PARAMS y fi if [[ ${CONFIG_COMPAT_RHEL_6_4} = "y" ]]; then @@ -224,6 +225,10 @@ if [[ ${CONFIG_COMPAT_RHEL_6_4} = "y" ]]; then set_config CONFIG_COMPAT_ETHTOOL_OPS_EXT y fi +if [[ ${CONFIG_COMPAT_RHEL_6_6} = "y" ]]; then + set_config CONFIG_COMPAT_RPC_XPRT_OPS_HAS_ALLOC_SLOT y +fi + if [[ ${RHEL_MAJOR} -eq "6" ]]; then set_config CONFIG_COMPAT_IS___SKB_TX_HASH y set_config CONFIG_COMPAT_IS_BITMAP y diff --git a/patches/0027-BACKPORT-nfsrdma-SLES11SP3.patch b/patches/0027-BACKPORT-nfsrdma-SLES11SP3.patch index 2145c34..d24e9b0 100644 --- a/patches/0027-BACKPORT-nfsrdma-SLES11SP3.patch +++ b/patches/0027-BACKPORT-nfsrdma-SLES11SP3.patch @@ -1,3 +1,11 @@ +From fee8373dd67c7bfc7a255906a341ec328463b185 Mon Sep 17 00:00:00 2001 +From: Jeff Becker +Date: Wed, 1 Apr 2015 15:43:27 -0700 +Subject: [PATCH] BACKPORT: nfsrdma SLES11SP3 + +Signed-off-by: Jeff Becker + +--- diff -Naur a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2015-03-11 14:44:18.354200417 -0700 +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2015-03-11 15:35:33.113138831 -0700 @@ -112,7 +120,7 @@ diff -Naur a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c } xprt = xprt_alloc(args->net, sizeof(struct rpcrdma_xprt), -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRT_ALLOC_4PARAMS) xprt_rdma_slot_table_entries, +#endif xprt_rdma_slot_table_entries); @@ -138,7 +146,7 @@ diff -Naur a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c static struct rpc_xprt_ops xprt_rdma_procs = { .reserve_xprt = xprt_reserve_xprt_cong, .release_xprt = xprt_release_xprt_cong, /* sunrpc/xprt.c */ -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) || CONFIG_COMPAT_RPC_XPRT_OPS_HAS_ALLOC_SLOT) .alloc_slot = xprt_alloc_slot, +#endif .release_request = xprt_release_rqst_cong, /* ditto */ diff --git a/patches/0028-BACKPORT-nfsrdma-RHEL6.6.patch b/patches/0028-BACKPORT-nfsrdma-RHEL6.6.patch new file mode 100644 index 0000000..3441a2d --- /dev/null +++ b/patches/0028-BACKPORT-nfsrdma-RHEL6.6.patch @@ -0,0 +1,49 @@ +From fee8373dd67c7bfc7a255906a341ec328463b185 Mon Sep 17 00:00:00 2001 +From: Jeff Becker +Date: Wed, 1 Apr 2015 15:43:27 -0700 +Subject: [PATCH] BACKPORT: nfsrdma RHEL 6.6 + +Signed-off-by: Jeff Becker + +--- +diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c +index 6166c98..a43095e 100644 +--- a/net/sunrpc/xprtrdma/rpc_rdma.c ++++ b/net/sunrpc/xprtrdma/rpc_rdma.c +@@ -357,9 +357,17 @@ rpcrdma_inline_pullup(struct rpc_rqst *rqst, int pad) + curlen = copy_len; + dprintk("RPC: %s: page %d destp 0x%p len %d curlen %d\n", + __func__, i, destp, copy_len, curlen); ++#if defined(CONFIG_COMPAT_KMAP_2PARAMS) ++ srcp = kmap_atomic(ppages[i], KM_SKB_SUNRPC_DATA); ++#else + srcp = kmap_atomic(ppages[i]); ++#endif + memcpy(destp, srcp+page_base, curlen); ++#if defined(CONFIG_COMPAT_KMAP_2PARAMS) ++ kunmap_atomic(srcp, KM_SKB_SUNRPC_DATA); ++#else + kunmap_atomic(srcp); ++#endif + rqst->rq_svec[0].iov_len += curlen; + destp += curlen; + copy_len -= curlen; +@@ -645,10 +653,18 @@ rpcrdma_inline_fixup(struct rpc_rqst *rqst, char *srcp, int copy_len, int pad) + dprintk("RPC: %s: page %d" + " srcp 0x%p len %d curlen %d\n", + __func__, i, srcp, copy_len, curlen); ++#if defined(CONFIG_COMPAT_KMAP_2PARAMS) ++ destp = kmap_atomic(ppages[i], KM_SKB_SUNRPC_DATA); ++#else + destp = kmap_atomic(ppages[i]); ++#endif + memcpy(destp + page_base, srcp, curlen); + flush_dcache_page(ppages[i]); ++#if defined(CONFIG_COMPAT_KMAP_2PARAMS) ++ kunmap_atomic(destp, KM_SKB_SUNRPC_DATA); ++#else + kunmap_atomic(destp); ++#endif + srcp += curlen; + copy_len -= curlen; + if (copy_len == 0) -- 2.41.0