mirror of https://gitee.com/openkylin/linux.git
Merge branch 'rds-ib-trivial-patches'
Zhu Yanjun says: ==================== rds: ib: trivial patches v2 -> v3 remove err from messages. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
92cd12c5ed
|
@ -677,9 +677,8 @@ int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id,
|
|||
event->param.conn.initiator_depth);
|
||||
|
||||
/* rdma_accept() calls rdma_reject() internally if it fails */
|
||||
err = rdma_accept(cm_id, &conn_param);
|
||||
if (err)
|
||||
rds_ib_conn_error(conn, "rdma_accept failed (%d)\n", err);
|
||||
if (rdma_accept(cm_id, &conn_param))
|
||||
rds_ib_conn_error(conn, "rdma_accept failed\n");
|
||||
|
||||
out:
|
||||
if (conn)
|
||||
|
|
|
@ -78,17 +78,15 @@ struct rds_ib_mr *rds_ib_alloc_fmr(struct rds_ib_device *rds_ibdev, int npages)
|
|||
return ibmr;
|
||||
|
||||
out_no_cigar:
|
||||
if (ibmr) {
|
||||
if (fmr->fmr)
|
||||
ib_dealloc_fmr(fmr->fmr);
|
||||
kfree(ibmr);
|
||||
}
|
||||
kfree(ibmr);
|
||||
atomic_dec(&pool->item_count);
|
||||
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibmr,
|
||||
struct scatterlist *sg, unsigned int nents)
|
||||
static int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev,
|
||||
struct rds_ib_mr *ibmr, struct scatterlist *sg,
|
||||
unsigned int nents)
|
||||
{
|
||||
struct ib_device *dev = rds_ibdev->dev;
|
||||
struct rds_ib_fmr *fmr = &ibmr->u.fmr;
|
||||
|
@ -114,29 +112,39 @@ int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibmr,
|
|||
u64 dma_addr = ib_sg_dma_address(dev, &scat[i]);
|
||||
|
||||
if (dma_addr & ~PAGE_MASK) {
|
||||
if (i > 0)
|
||||
if (i > 0) {
|
||||
ib_dma_unmap_sg(dev, sg, nents,
|
||||
DMA_BIDIRECTIONAL);
|
||||
return -EINVAL;
|
||||
else
|
||||
} else {
|
||||
++page_cnt;
|
||||
}
|
||||
}
|
||||
if ((dma_addr + dma_len) & ~PAGE_MASK) {
|
||||
if (i < sg_dma_len - 1)
|
||||
if (i < sg_dma_len - 1) {
|
||||
ib_dma_unmap_sg(dev, sg, nents,
|
||||
DMA_BIDIRECTIONAL);
|
||||
return -EINVAL;
|
||||
else
|
||||
} else {
|
||||
++page_cnt;
|
||||
}
|
||||
}
|
||||
|
||||
len += dma_len;
|
||||
}
|
||||
|
||||
page_cnt += len >> PAGE_SHIFT;
|
||||
if (page_cnt > ibmr->pool->fmr_attr.max_pages)
|
||||
if (page_cnt > ibmr->pool->fmr_attr.max_pages) {
|
||||
ib_dma_unmap_sg(dev, sg, nents, DMA_BIDIRECTIONAL);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dma_pages = kmalloc_node(sizeof(u64) * page_cnt, GFP_ATOMIC,
|
||||
rdsibdev_to_node(rds_ibdev));
|
||||
if (!dma_pages)
|
||||
if (!dma_pages) {
|
||||
ib_dma_unmap_sg(dev, sg, nents, DMA_BIDIRECTIONAL);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
page_cnt = 0;
|
||||
for (i = 0; i < sg_dma_len; ++i) {
|
||||
|
@ -149,8 +157,10 @@ int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibmr,
|
|||
}
|
||||
|
||||
ret = ib_map_phys_fmr(fmr->fmr, dma_pages, page_cnt, io_addr);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
ib_dma_unmap_sg(dev, sg, nents, DMA_BIDIRECTIONAL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Success - we successfully remapped the MR, so we can
|
||||
* safely tear down the old mapping.
|
||||
|
|
|
@ -125,8 +125,6 @@ void rds_ib_mr_exit(void);
|
|||
void __rds_ib_teardown_mr(struct rds_ib_mr *);
|
||||
void rds_ib_teardown_mr(struct rds_ib_mr *);
|
||||
struct rds_ib_mr *rds_ib_alloc_fmr(struct rds_ib_device *, int);
|
||||
int rds_ib_map_fmr(struct rds_ib_device *, struct rds_ib_mr *,
|
||||
struct scatterlist *, unsigned int);
|
||||
struct rds_ib_mr *rds_ib_reuse_mr(struct rds_ib_mr_pool *);
|
||||
int rds_ib_flush_mr_pool(struct rds_ib_mr_pool *, int, struct rds_ib_mr **);
|
||||
struct rds_ib_mr *rds_ib_reg_fmr(struct rds_ib_device *, struct scatterlist *,
|
||||
|
|
Loading…
Reference in New Issue