RDMA, core and ULPs: Declare ib_post_send() and ib_post_recv() arguments const
Since neither ib_post_send() nor ib_post_recv() modify the data structure their second argument points at, declare that argument const. This change makes it necessary to declare the 'bad_wr' argument const too and also to modify all ULPs that call ib_post_send(), ib_post_recv() or ib_post_srq_recv(). This patch does not change any functionality but makes it possible for the compiler to verify whether the ib_post_(send|recv|srq_recv) really do not modify the posted work request. To make this possible, only one cast had to be introduce that casts away constness, namely in rpcrdma_post_recvs(). The only way I can think of to avoid that cast is to introduce an additional loop in that function or to change the data type of bad_wr from struct ib_recv_wr ** into int (an index that refers to an element in the work request list). However, both approaches would require even more extensive changes than this patch. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Tento commit je obsažen v:

odevzdal
Jason Gunthorpe

rodič
7bb1fafc2f
revize
d34ac5cd3a
@@ -246,7 +246,7 @@ static int iwch_sgl2pbl_map(struct iwch_dev *rhp, struct ib_sge *sg_list,
|
||||
}
|
||||
|
||||
static int build_rdma_recv(struct iwch_qp *qhp, union t3_wr *wqe,
|
||||
struct ib_recv_wr *wr)
|
||||
const struct ib_recv_wr *wr)
|
||||
{
|
||||
int i, err = 0;
|
||||
u32 pbl_addr[T3_MAX_SGE];
|
||||
@@ -286,7 +286,7 @@ static int build_rdma_recv(struct iwch_qp *qhp, union t3_wr *wqe,
|
||||
}
|
||||
|
||||
static int build_zero_stag_recv(struct iwch_qp *qhp, union t3_wr *wqe,
|
||||
struct ib_recv_wr *wr)
|
||||
const struct ib_recv_wr *wr)
|
||||
{
|
||||
int i;
|
||||
u32 pbl_addr;
|
||||
@@ -348,8 +348,8 @@ static int build_zero_stag_recv(struct iwch_qp *qhp, union t3_wr *wqe,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int iwch_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||
struct ib_send_wr **bad_wr)
|
||||
int iwch_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
|
||||
const struct ib_send_wr **bad_wr)
|
||||
{
|
||||
int err = 0;
|
||||
u8 uninitialized_var(t3_wr_flit_cnt);
|
||||
@@ -463,8 +463,8 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
int iwch_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
|
||||
struct ib_recv_wr **bad_wr)
|
||||
int iwch_post_receive(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
|
||||
const struct ib_recv_wr **bad_wr)
|
||||
{
|
||||
int err = 0;
|
||||
struct iwch_qp *qhp;
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele