|
@@ -69,8 +69,10 @@ fmr_op_init(struct rpcrdma_xprt *r_xprt)
|
|
|
INIT_LIST_HEAD(&buf->rb_mws);
|
|
|
INIT_LIST_HEAD(&buf->rb_all);
|
|
|
|
|
|
- i = (buf->rb_max_requests + 1) * RPCRDMA_MAX_SEGS;
|
|
|
- dprintk("RPC: %s: initializing %d FMRs\n", __func__, i);
|
|
|
+ i = max_t(int, RPCRDMA_MAX_DATA_SEGS / RPCRDMA_MAX_FMR_SGES, 1);
|
|
|
+ i += 2; /* head + tail */
|
|
|
+ i *= buf->rb_max_requests; /* one set for each RPC slot */
|
|
|
+ dprintk("RPC: %s: initalizing %d FMRs\n", __func__, i);
|
|
|
|
|
|
rc = -ENOMEM;
|
|
|
while (i--) {
|