Skip to content

Commit e5005fe

Browse files
committed
Version 3.1-1.0.4
1 parent 9a8a7d4 commit e5005fe

File tree

142 files changed

+65544
-23237
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

142 files changed

+65544
-23237
lines changed

Diff for: backports-2.6.16/0001-BACKPORT-IB_core-support-for-SLES10-SP3.patch

+212-269
Large diffs are not rendered by default.

Diff for: backports-2.6.16/0002-BACKPORT-mlx4_core-mlx4_ib-support-for-SLES10-SP3.patch

+188-257
Large diffs are not rendered by default.

Diff for: backports-2.6.16/0003-BACKPORT-mlx5-support-for-SLES10-SP3.patch

+204-172
Large diffs are not rendered by default.

Diff for: backports-2.6.18/0001-BACKPORT-mlx5-for-RHEL5.2-without-MQ.patch

+677-527
Large diffs are not rendered by default.

Diff for: backports/0001-BACKPORT-mlx5.patch

+716-400
Large diffs are not rendered by default.

Diff for: backports/0002-BACKPORT-NFSRDMA.patch

+47-47
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ Subject: [PATCH] BACKPORT: NFSRDMA
33

44
Signed-off-by: Vladimir Sokolovsky <[email protected]>
55
---
6-
net/sunrpc/xprtrdma/rpc_rdma.c | 20 ++++++++-
7-
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 70 +++++++++++++++++++++++++++++-
8-
net/sunrpc/xprtrdma/svc_rdma_sendto.c | 8 +++
9-
net/sunrpc/xprtrdma/svc_rdma_transport.c | 18 ++++++++
10-
net/sunrpc/xprtrdma/transport.c | 36 ++++++++++++++--
11-
net/sunrpc/xprtrdma/verbs.c | 8 ++--
12-
6 files changed, 148 insertions(+), 12 deletions(-)
6+
net/sunrpc/xprtrdma/rpc_rdma.c | 20 ++++++++-
7+
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 70 +++++++++++++++++++++++++++++++-
8+
net/sunrpc/xprtrdma/svc_rdma_sendto.c | 12 ++++++
9+
net/sunrpc/xprtrdma/svc_rdma_transport.c | 18 ++++++++
10+
net/sunrpc/xprtrdma/transport.c | 36 ++++++++++++++--
11+
net/sunrpc/xprtrdma/verbs.c | 8 ++--
12+
6 files changed, 152 insertions(+), 12 deletions(-)
1313

14-
diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c
15-
index xxxxxxx..xxxxxxx xxxxxx
1614
--- a/net/sunrpc/xprtrdma/rpc_rdma.c
1715
+++ b/net/sunrpc/xprtrdma/rpc_rdma.c
1816
@@ -49,11 +49,11 @@
@@ -29,7 +27,7 @@ index xxxxxxx..xxxxxxx xxxxxx
2927
static const char transfertypes[][12] = {
3028
"pure inline", /* no chunks */
3129
" read chunk", /* some argument via rdma read */
32-
@@ -361,9 +361,17 @@ rpcrdma_inline_pullup(struct rpc_rqst *rqst, int pad)
30+
@@ -361,9 +361,17 @@ rpcrdma_inline_pullup(struct rpc_rqst *r
3331
curlen = copy_len;
3432
dprintk("RPC: %s: page %d destp 0x%p len %d curlen %d\n",
3533
__func__, i, destp, copy_len, curlen);
@@ -47,7 +45,7 @@ index xxxxxxx..xxxxxxx xxxxxx
4745
rqst->rq_svec[0].iov_len += curlen;
4846
destp += curlen;
4947
copy_len -= curlen;
50-
@@ -649,10 +657,18 @@ rpcrdma_inline_fixup(struct rpc_rqst *rqst, char *srcp, int copy_len, int pad)
48+
@@ -649,10 +657,18 @@ rpcrdma_inline_fixup(struct rpc_rqst *rq
5149
dprintk("RPC: %s: page %d"
5250
" srcp 0x%p len %d curlen %d\n",
5351
__func__, i, srcp, copy_len, curlen);
@@ -66,11 +64,9 @@ index xxxxxxx..xxxxxxx xxxxxx
6664
srcp += curlen;
6765
copy_len -= curlen;
6866
if (copy_len == 0)
69-
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
70-
index xxxxxxx..xxxxxxx xxxxxx
7167
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
7268
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
73-
@@ -93,7 +93,11 @@ static void rdma_build_arg_xdr(struct svc_rqst *rqstp,
69+
@@ -93,7 +93,11 @@ static void rdma_build_arg_xdr(struct sv
7470
sge_no++;
7571
}
7672
rqstp->rq_respages = &rqstp->rq_pages[sge_no];
@@ -82,7 +78,7 @@ index xxxxxxx..xxxxxxx xxxxxx
8278

8379
/* We should never run out of SGE because the limit is defined to
8480
* support the max allowed RPC data length
85-
@@ -136,7 +140,10 @@ typedef int (*rdma_reader_fn)(struct svcxprt_rdma *xprt,
81+
@@ -136,7 +140,10 @@ typedef int (*rdma_reader_fn)(struct svc
8682
int last);
8783

8884
/* Issue an RDMA_READ using the local lkey to map the data sink */
@@ -94,7 +90,7 @@ index xxxxxxx..xxxxxxx xxxxxx
9490
struct svc_rqst *rqstp,
9591
struct svc_rdma_op_ctxt *head,
9692
int *page_no,
97-
@@ -144,7 +151,11 @@ static int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
93+
@@ -144,7 +151,11 @@ static int rdma_read_chunk_lcl(struct sv
9894
u32 rs_handle,
9995
u32 rs_length,
10096
u64 rs_offset,
@@ -106,7 +102,7 @@ index xxxxxxx..xxxxxxx xxxxxx
106102
{
107103
struct ib_send_wr read_wr;
108104
int pages_needed = PAGE_ALIGN(*page_offset + rs_length) >> PAGE_SHIFT;
109-
@@ -168,7 +179,9 @@ static int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
105+
@@ -168,7 +179,9 @@ static int rdma_read_chunk_lcl(struct sv
110106
if (!pg_off)
111107
head->count++;
112108
rqstp->rq_respages = &rqstp->rq_arg.pages[pg_no+1];
@@ -116,7 +112,7 @@ index xxxxxxx..xxxxxxx xxxxxx
116112
ctxt->sge[pno].addr =
117113
ib_dma_map_page(xprt->sc_cm_id->device,
118114
head->arg.pages[pg_no], pg_off,
119-
@@ -229,7 +242,10 @@ static int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
115+
@@ -229,7 +242,10 @@ static int rdma_read_chunk_lcl(struct sv
120116
}
121117

122118
/* Issue an RDMA_READ using an FRMR to map the data sink */
@@ -128,7 +124,7 @@ index xxxxxxx..xxxxxxx xxxxxx
128124
struct svc_rqst *rqstp,
129125
struct svc_rdma_op_ctxt *head,
130126
int *page_no,
131-
@@ -237,7 +253,11 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
127+
@@ -237,7 +253,11 @@ static int rdma_read_chunk_frmr(struct s
132128
u32 rs_handle,
133129
u32 rs_length,
134130
u64 rs_offset,
@@ -140,7 +136,7 @@ index xxxxxxx..xxxxxxx xxxxxx
140136
{
141137
struct ib_send_wr read_wr;
142138
struct ib_send_wr inv_wr;
143-
@@ -273,7 +293,9 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
139+
@@ -273,7 +293,9 @@ static int rdma_read_chunk_frmr(struct s
144140
if (!pg_off)
145141
head->count++;
146142
rqstp->rq_respages = &rqstp->rq_arg.pages[pg_no+1];
@@ -150,7 +146,7 @@ index xxxxxxx..xxxxxxx xxxxxx
150146
frmr->page_list->page_list[pno] =
151147
ib_dma_map_page(xprt->sc_cm_id->device,
152148
head->arg.pages[pg_no], 0,
153-
@@ -365,24 +387,50 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
149+
@@ -365,24 +387,50 @@ static int rdma_read_chunk_frmr(struct s
154150
return ret;
155151
}
156152

@@ -201,7 +197,7 @@ index xxxxxxx..xxxxxxx xxxxxx
201197
return -EINVAL;
202198

203199
/* The request is completed when the RDMA_READs complete. The
204-
@@ -398,27 +446,43 @@ static int rdma_read_chunks(struct svcxprt_rdma *xprt,
200+
@@ -398,27 +446,43 @@ static int rdma_read_chunks(struct svcxp
205201
head->arg.len = rqstp->rq_arg.len;
206202
head->arg.buflen = rqstp->rq_arg.buflen;
207203

@@ -245,7 +241,7 @@ index xxxxxxx..xxxxxxx xxxxxx
245241
if (ret < 0)
246242
goto err;
247243
byte_count -= ret;
248-
@@ -483,7 +547,9 @@ static int rdma_read_complete(struct svc_rqst *rqstp,
244+
@@ -483,7 +547,9 @@ static int rdma_read_complete(struct svc
249245

250246
/* rq_respages starts after the last arg page */
251247
rqstp->rq_respages = &rqstp->rq_arg.pages[page_no];
@@ -255,11 +251,9 @@ index xxxxxxx..xxxxxxx xxxxxx
255251

256252
/* Rebuild rq_arg head and tail. */
257253
rqstp->rq_arg.head[0] = head->arg.head[0];
258-
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
259-
index xxxxxxx..xxxxxxx xxxxxx
260254
--- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
261255
+++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
262-
@@ -375,7 +375,9 @@ static int send_reply(struct svcxprt_rdma *rdma,
256+
@@ -375,7 +375,9 @@ static int send_reply(struct svcxprt_rdm
263257
int sge_no;
264258
int sge_bytes;
265259
int page_no;
@@ -269,7 +263,7 @@ index xxxxxxx..xxxxxxx xxxxxx
269263
int ret;
270264

271265
/* Post a recv buffer to handle another request. */
272-
@@ -427,8 +429,12 @@ static int send_reply(struct svcxprt_rdma *rdma,
266+
@@ -427,8 +429,12 @@ static int send_reply(struct svcxprt_rdm
273267
* respages array. They are our pages until the I/O
274268
* completes.
275269
*/
@@ -282,7 +276,7 @@ index xxxxxxx..xxxxxxx xxxxxx
282276
ctxt->pages[page_no+1] = rqstp->rq_respages[page_no];
283277
ctxt->count++;
284278
rqstp->rq_respages[page_no] = NULL;
285-
@@ -440,7 +446,9 @@ static int send_reply(struct svcxprt_rdma *rdma,
279+
@@ -440,7 +446,9 @@ static int send_reply(struct svcxprt_rdm
286280
if (page_no+1 >= sge_no)
287281
ctxt->sge[page_no+1].length = 0;
288282
}
@@ -292,11 +286,21 @@ index xxxxxxx..xxxxxxx xxxxxx
292286

293287
BUG_ON(sge_no > rdma->sc_max_sge);
294288
memset(&send_wr, 0, sizeof send_wr);
295-
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
296-
index xxxxxxx..xxxxxxx xxxxxx
289+
@@ -509,7 +517,11 @@ int svc_rdma_sendto(struct svc_rqst *rqs
290+
inline_bytes = rqstp->rq_res.len;
291+
292+
/* Create the RDMA response header */
293+
+#ifdef HAVE_SVC_RDMA_GET_PAGE
294+
res_page = svc_rdma_get_page();
295+
+#else
296+
+ res_page = alloc_page(GFP_KERNEL | __GFP_NOFAIL);
297+
+#endif
298+
rdma_resp = page_address(res_page);
299+
reply_ary = svc_rdma_get_reply_array(rdma_argp);
300+
if (reply_ary)
297301
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
298302
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
299-
@@ -66,7 +66,9 @@ static void dto_tasklet_func(unsigned long data);
303+
@@ -66,7 +66,9 @@ static void dto_tasklet_func(unsigned lo
300304
static void svc_rdma_detach(struct svc_xprt *xprt);
301305
static void svc_rdma_free(struct svc_xprt *xprt);
302306
static int svc_rdma_has_wspace(struct svc_xprt *xprt);
@@ -306,7 +310,7 @@ index xxxxxxx..xxxxxxx xxxxxx
306310
static void rq_cq_reap(struct svcxprt_rdma *xprt);
307311
static void sq_cq_reap(struct svcxprt_rdma *xprt);
308312

309-
@@ -84,7 +86,9 @@ static struct svc_xprt_ops svc_rdma_ops = {
313+
@@ -84,7 +86,9 @@ static struct svc_xprt_ops svc_rdma_ops
310314
.xpo_prep_reply_hdr = svc_rdma_prep_reply_hdr,
311315
.xpo_has_wspace = svc_rdma_has_wspace,
312316
.xpo_accept = svc_rdma_accept,
@@ -326,7 +330,7 @@ index xxxxxxx..xxxxxxx xxxxxx
326330
};
327331

328332
struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
329-
@@ -461,7 +467,11 @@ static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv,
333+
@@ -461,7 +467,11 @@ static struct svcxprt_rdma *rdma_create_
330334

331335
if (!cma_xprt)
332336
return NULL;
@@ -338,7 +342,7 @@ index xxxxxxx..xxxxxxx xxxxxx
338342
INIT_LIST_HEAD(&cma_xprt->sc_accept_q);
339343
INIT_LIST_HEAD(&cma_xprt->sc_dto_q);
340344
INIT_LIST_HEAD(&cma_xprt->sc_rq_dto_q);
341-
@@ -970,10 +980,16 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
345+
@@ -970,10 +980,16 @@ static struct svc_xprt *svc_rdma_accept(
342346
* NB: iWARP requires remote write access for the data sink
343347
* of an RDMA_READ. IB does not.
344348
*/
@@ -355,7 +359,7 @@ index xxxxxxx..xxxxxxx xxxxxx
355359
}
356360

357361
/*
358-
@@ -1205,10 +1221,12 @@ static int svc_rdma_has_wspace(struct svc_xprt *xprt)
362+
@@ -1205,10 +1221,12 @@ static int svc_rdma_has_wspace(struct sv
359363
return 1;
360364
}
361365

@@ -368,8 +372,6 @@ index xxxxxxx..xxxxxxx xxxxxx
368372

369373
/*
370374
* Attempt to register the kvec representing the RPC memory with the
371-
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
372-
index xxxxxxx..xxxxxxx xxxxxx
373375
--- a/net/sunrpc/xprtrdma/transport.c
374376
+++ b/net/sunrpc/xprtrdma/transport.c
375377
@@ -51,11 +51,13 @@
@@ -387,7 +389,7 @@ index xxxxxxx..xxxxxxx xxxxxx
387389
# define RPCDBG_FACILITY RPCDBG_TRANS
388390
#endif
389391

390-
@@ -75,7 +77,7 @@ static unsigned int xprt_rdma_inline_write_padding;
392+
@@ -75,7 +77,7 @@ static unsigned int xprt_rdma_inline_wri
391393
static unsigned int xprt_rdma_memreg_strategy = RPCRDMA_FRMR;
392394
int xprt_rdma_pad_optimize = 1;
393395

@@ -396,7 +398,7 @@ index xxxxxxx..xxxxxxx xxxxxx
396398

397399
static unsigned int min_slot_table_size = RPCRDMA_MIN_SLOT_TABLE;
398400
static unsigned int max_slot_table_size = RPCRDMA_MAX_SLOT_TABLE;
399-
@@ -277,8 +279,14 @@ xprt_setup_rdma(struct xprt_create *args)
401+
@@ -277,8 +279,14 @@ xprt_setup_rdma(struct xprt_create *args
400402
return ERR_PTR(-EBADF);
401403
}
402404

@@ -411,7 +413,7 @@ index xxxxxxx..xxxxxxx xxxxxx
411413
xprt_rdma_slot_table_entries);
412414
if (xprt == NULL) {
413415
dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n",
414-
@@ -426,8 +434,15 @@ xprt_rdma_set_port(struct rpc_xprt *xprt, u16 port)
416+
@@ -426,8 +434,15 @@ xprt_rdma_set_port(struct rpc_xprt *xprt
415417
}
416418

417419
static void
@@ -427,7 +429,7 @@ index xxxxxxx..xxxxxxx xxxxxx
427429
struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
428430

429431
if (r_xprt->rx_ep.rep_connected != 0) {
430-
@@ -463,15 +478,22 @@ xprt_rdma_allocate(struct rpc_task *task, size_t size)
432+
@@ -463,15 +478,22 @@ xprt_rdma_allocate(struct rpc_task *task
431433
struct rpcrdma_regbuf *rb;
432434
struct rpcrdma_req *req;
433435
size_t min_size;
@@ -450,7 +452,7 @@ index xxxxxxx..xxxxxxx xxxxxx
450452

451453
if (req->rl_rdmabuf == NULL)
452454
goto out_rdmabuf;
453-
@@ -603,7 +625,11 @@ xprt_rdma_send_request(struct rpc_task *task)
455+
@@ -603,7 +625,11 @@ xprt_rdma_send_request(struct rpc_task *
454456
if (rpcrdma_ep_post(&r_xprt->rx_ia, &r_xprt->rx_ep, req))
455457
goto drop_connection;
456458

@@ -462,7 +464,7 @@ index xxxxxxx..xxxxxxx xxxxxx
462464
rqst->rq_bytes_sent = 0;
463465
return 0;
464466

465-
@@ -660,7 +686,9 @@ static void xprt_rdma_print_stats(struct rpc_xprt *xprt, struct seq_file *seq)
467+
@@ -660,7 +686,9 @@ static void xprt_rdma_print_stats(struct
466468
static struct rpc_xprt_ops xprt_rdma_procs = {
467469
.reserve_xprt = xprt_reserve_xprt_cong,
468470
.release_xprt = xprt_release_xprt_cong, /* sunrpc/xprt.c */
@@ -472,7 +474,7 @@ index xxxxxxx..xxxxxxx xxxxxx
472474
.release_request = xprt_release_rqst_cong, /* ditto */
473475
.set_retrans_timeout = xprt_set_retrans_timeout_def, /* ditto */
474476
.rpcbind = rpcb_getport_async, /* sunrpc/rpcb_clnt.c */
475-
@@ -687,7 +715,7 @@ static void __exit xprt_rdma_cleanup(void)
477+
@@ -687,7 +715,7 @@ static void __exit xprt_rdma_cleanup(voi
476478
int rc;
477479

478480
dprintk("RPCRDMA Module Removed, deregister RPC RDMA transport\n");
@@ -490,8 +492,6 @@ index xxxxxxx..xxxxxxx xxxxxx
490492
if (!sunrpc_table_header)
491493
sunrpc_table_header = register_sysctl_table(sunrpc_table);
492494
#endif
493-
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
494-
index xxxxxxx..xxxxxxx xxxxxx
495495
--- a/net/sunrpc/xprtrdma/verbs.c
496496
+++ b/net/sunrpc/xprtrdma/verbs.c
497497
@@ -58,7 +58,7 @@
@@ -512,7 +512,7 @@ index xxxxxxx..xxxxxxx xxxxxx
512512
static const char * const conn[] = {
513513
"address resolved",
514514
"address error",
515-
@@ -423,7 +423,7 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event)
515+
@@ -423,7 +423,7 @@ rpcrdma_conn_upcall(struct rdma_cm_id *i
516516
struct rpcrdma_xprt *xprt = id->context;
517517
struct rpcrdma_ia *ia = &xprt->rx_ia;
518518
struct rpcrdma_ep *ep = &xprt->rx_ep;

0 commit comments

Comments
 (0)