projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-2.6-microblaze.git]
/
net
/
rds
/
ib_rdma.c
diff --git
a/net/rds/ib_rdma.c
b/net/rds/ib_rdma.c
index
e678699
..
2e49a40
100644
(file)
--- a/
net/rds/ib_rdma.c
+++ b/
net/rds/ib_rdma.c
@@
-537,11
+537,12
@@
void rds_ib_flush_mrs(void)
}
void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
}
void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
- struct rds_sock *rs, u32 *key_ret)
+ struct rds_sock *rs, u32 *key_ret,
+ struct rds_connection *conn)
{
struct rds_ib_device *rds_ibdev;
struct rds_ib_mr *ibmr = NULL;
{
struct rds_ib_device *rds_ibdev;
struct rds_ib_mr *ibmr = NULL;
- struct rds_ib_connection *ic =
rs->rs_conn->c_transport_data
;
+ struct rds_ib_connection *ic =
NULL
;
int ret;
rds_ibdev = rds_ib_get_device(rs->rs_bound_addr);
int ret;
rds_ibdev = rds_ib_get_device(rs->rs_bound_addr);
@@
-550,6
+551,9
@@
void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
goto out;
}
goto out;
}
+ if (conn)
+ ic = conn->c_transport_data;
+
if (!rds_ibdev->mr_8k_pool || !rds_ibdev->mr_1m_pool) {
ret = -ENODEV;
goto out;
if (!rds_ibdev->mr_8k_pool || !rds_ibdev->mr_1m_pool) {
ret = -ENODEV;
goto out;
@@
-559,17
+563,18
@@
void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
ibmr = rds_ib_reg_frmr(rds_ibdev, ic, sg, nents, key_ret);
else
ibmr = rds_ib_reg_fmr(rds_ibdev, sg, nents, key_ret);
ibmr = rds_ib_reg_frmr(rds_ibdev, ic, sg, nents, key_ret);
else
ibmr = rds_ib_reg_fmr(rds_ibdev, sg, nents, key_ret);
- if (ibmr)
- rds_ibdev = NULL;
-
- out:
- if (!ibmr)
+ if (IS_ERR(ibmr)) {
+ ret = PTR_ERR(ibmr);
pr_warn("RDS/IB: rds_ib_get_mr failed (errno=%d)\n", ret);
pr_warn("RDS/IB: rds_ib_get_mr failed (errno=%d)\n", ret);
+ } else {
+ return ibmr;
+ }
+ out:
if (rds_ibdev)
rds_ib_dev_put(rds_ibdev);
if (rds_ibdev)
rds_ib_dev_put(rds_ibdev);
- return
ibmr
;
+ return
ERR_PTR(ret)
;
}
void rds_ib_destroy_mr_pool(struct rds_ib_mr_pool *pool)
}
void rds_ib_destroy_mr_pool(struct rds_ib_mr_pool *pool)