]> git.openfabrics.org - ~tnikolova/compat-rdma/.git/commitdiff
NFSoRDMA: backport for RHEL 6.5 and 6.6
authorJeff Becker <Jeffrey.C.Becker@nasa.gov>
Wed, 1 Apr 2015 22:43:27 +0000 (15:43 -0700)
committerVladimir Sokolovsky <vlad@mellanox.com>
Tue, 7 Apr 2015 10:08:13 +0000 (13:08 +0300)
Signed-off-by: Jeff Becker <Jeffrey.C.Becker@nasa.gov>
ofed_scripts/gen-compat-config.sh
patches/0027-BACKPORT-nfsrdma-SLES11SP3.patch
patches/0028-BACKPORT-nfsrdma-RHEL6.6.patch [new file with mode: 0644]

index ab01d729d7998e165405fca60a1e62457ffc96c5..59d6b552febee416a127497571767763b71ad90d 100755 (executable)
@@ -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
index 2145c344cb7f4995aff377558169c23e9cc65486..d24e9b05be33098a0a73a543a5970bcbb2c4ccae 100644 (file)
@@ -1,3 +1,11 @@
+From fee8373dd67c7bfc7a255906a341ec328463b185 Mon Sep 17 00:00:00 2001
+From: Jeff Becker <Jeffrey.C.Becker@nasa.gov>
+Date: Wed, 1 Apr 2015 15:43:27 -0700
+Subject: [PATCH] BACKPORT: nfsrdma SLES11SP3
+
+Signed-off-by: Jeff Becker <Jeffrey.C.Becker@nasa.gov>
+
+---
 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 (file)
index 0000000..3441a2d
--- /dev/null
@@ -0,0 +1,49 @@
+From fee8373dd67c7bfc7a255906a341ec328463b185 Mon Sep 17 00:00:00 2001
+From: Jeff Becker <Jeffrey.C.Becker@nasa.gov>
+Date: Wed, 1 Apr 2015 15:43:27 -0700
+Subject: [PATCH] BACKPORT: nfsrdma RHEL 6.6
+
+Signed-off-by: Jeff Becker <Jeffrey.C.Becker@nasa.gov>
+
+---
+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)