[openib-general] [PATCH 1/6] libibverbs include files changes.

Krishna Kumar2 krkumar2 at in.ibm.com
Mon Jul 31 04:25:47 PDT 2006


OTOH, I think #A below is possible (will provide feedback on this tmrw).
Please let me know comments on other items though.

Thanks,

- KK

Krishna Kumar2/India/IBM wrote on 07/31/2006 02:44:46 PM:

> Hi Sean & Roland,
> 
> Thanks for your review comments. I will respond to all comments in
> this mail to make it easy :)
> 
> A.
> -------
> >  > Why not just do:
> >  > 
> >  > #define rdma_structure_name ibv_structure_name
> >  > 
> >  > Then we simply remove the #define and replace ibv_structure_name 
with 
> >  > rdma_structure_name when ready.  This better shows the changes, 
prevents 
> >  > duplicating every structure, and should avoid any compile warnings.
> > 
> > I agree, except let's make rdma_structure_name the real name, and do
> > the define the opposite way.  That way it's easier to remove the
> > compatibility stuff later.

> I had tried this some time back (with amso driver actually) and found it 
had some
> issues. Eg, some data structures have the same name as API routines. I 
did :
> 
> "cscope -1<fn_names> -L" on all function names and found 27 functions 
that
> also clashed with structure names. The full list is :
> 
> ********* Problem with ibv_query_device **********
> include/infiniband/kern-abi.h ibv_query_device 146 struct 
ibv_query_device {
> src/verbs.c ibv_query_device 81 int ibv_query_device(struct ibv_context 
*context
> ********* Problem with ibv_query_port **********
> include/infiniband/kern-abi.h ibv_query_port 198 struct ibv_query_port {
> src/verbs.c ibv_query_port 87 int ibv_query_port(struct ibv_context 
*context
> ********* Problem with ibv_alloc_pd **********
> include/infiniband/kern-abi.h ibv_alloc_pd 231 struct ibv_alloc_pd {
> src/verbs.c ibv_alloc_pd 137 struct ibv_pd *ibv_alloc_pd(struct 
ibv_context *
> ********* Problem with ibv_dealloc_pd **********
> include/infiniband/kern-abi.h ibv_dealloc_pd 243 struct ibv_dealloc_pd {
> src/verbs.c ibv_dealloc_pd 148 int ibv_dealloc_pd(struct ibv_pd *pd)
> ********* Problem with ibv_reg_mr **********
> include/infiniband/kern-abi.h ibv_reg_mr 250 struct ibv_reg_mr {
> src/verbs.c ibv_reg_mr 153 struct ibv_mr *ibv_reg_mr(struct ibv_pd *pd,
> ********* Problem with ibv_dereg_mr **********
> include/infiniband/kern-abi.h ibv_dereg_mr 269 struct ibv_dereg_mr {
> src/verbs.c ibv_dereg_mr 167 int ibv_dereg_mr(struct ibv_mr *mr)
> ********* Problem with ibv_create_comp_channel **********
> include/infiniband/kern-abi.h ibv_create_comp_channel 276 struct 
> ibv_create_comp_channel {
> src/verbs.c ibv_create_comp_channel 190 struct ibv_comp_channel 
> *ibv_create_comp_channel(struct ibv_context *context)
> ********* Problem with ibv_create_cq **********
> include/infiniband/kern-abi.h ibv_create_cq 287 struct ibv_create_cq {
> src/verbs.c ibv_create_cq 232 struct ibv_cq *ibv_create_cq(struct 
ibv_context 
> *context, int cqe, void *cq_context,
> ********* Problem with ibv_resize_cq **********
> include/infiniband/kern-abi.h ibv_resize_cq 346 struct ibv_resize_cq {
> src/verbs.c ibv_resize_cq 250 int ibv_resize_cq(struct ibv_cq *cq, int 
cqe)
> ********* Problem with ibv_destroy_cq **********
> include/infiniband/kern-abi.h ibv_destroy_cq 360 struct ibv_destroy_cq {
> src/verbs.c ibv_destroy_cq 258 int ibv_destroy_cq(struct ibv_cq *cq)
> ********* Problem with ibv_poll_cq **********
> include/infiniband/kern-abi.h ibv_poll_cq 323 struct ibv_poll_cq {
> include/infiniband/verbs.h ibv_poll_cq 831 static inline int 
> ibv_poll_cq(struct ibv_cq *cq, int num_entries, struct ibv_wc *wc)
> ********* Problem with ibv_req_notify_cq **********
> include/infiniband/kern-abi.h ibv_req_notify_cq 338 struct 
ibv_req_notify_cq {
> include/infiniband/verbs.h ibv_req_notify_cq 845 static inline int 
> ibv_req_notify_cq(struct ibv_cq *cq, int solicited_only)
> ********* Problem with ibv_create_srq **********
> include/infiniband/kern-abi.h ibv_create_srq 696 struct ibv_create_srq {
> src/verbs.c ibv_create_srq 289 struct ibv_srq *ibv_create_srq(struct 
ibv_pd *pd,
> ********* Problem with ibv_modify_srq **********
> include/infiniband/kern-abi.h ibv_modify_srq 716 struct ibv_modify_srq {
> src/verbs.c ibv_modify_srq 310 int ibv_modify_srq(struct ibv_srq *srq,
> ********* Problem with ibv_query_srq **********
> include/infiniband/kern-abi.h ibv_query_srq 727 struct ibv_query_srq {
> src/verbs.c ibv_query_srq 317 int ibv_query_srq(struct ibv_srq *srq, 
struct 
> ibv_srq_attr *srq_attr)
> ********* Problem with ibv_destroy_srq **********
> include/infiniband/kern-abi.h ibv_destroy_srq 744 struct ibv_destroy_srq 
{
> src/verbs.c ibv_destroy_srq 322 int ibv_destroy_srq(struct ibv_srq *srq)
> ********* Problem with ibv_post_srq_recv **********
> include/infiniband/kern-abi.h ibv_post_srq_recv 636 struct 
ibv_post_srq_recv {
> include/infiniband/verbs.h ibv_post_srq_recv 901 static inline int 
> ibv_post_srq_recv(struct ibv_srq *srq,
> ********* Problem with ibv_create_qp **********
> include/infiniband/kern-abi.h ibv_create_qp 432 struct ibv_create_qp {
> src/verbs.c ibv_create_qp 327 struct ibv_qp *ibv_create_qp(struct ibv_pd 
*pd,
> ********* Problem with ibv_modify_qp **********
> include/infiniband/kern-abi.h ibv_modify_qp 524 struct ibv_modify_qp {
> src/verbs.c ibv_modify_qp 364 int ibv_modify_qp(struct ibv_qp *qp, 
struct 
> ibv_qp_attr *attr,
> ********* Problem with ibv_query_qp **********
> include/infiniband/kern-abi.h ibv_query_qp 480 struct ibv_query_qp {
> src/verbs.c ibv_query_qp 348 int ibv_query_qp(struct ibv_qp *qp, struct 
> ibv_qp_attr *attr,
> ********* Problem with ibv_destroy_qp **********
> include/infiniband/kern-abi.h ibv_destroy_qp 557 struct ibv_destroy_qp {
> src/verbs.c ibv_destroy_qp 379 int ibv_destroy_qp(struct ibv_qp *qp)
> ********* Problem with ibv_post_send **********
> include/infiniband/kern-abi.h ibv_post_send 598 struct ibv_post_send {
> include/infiniband/verbs.h ibv_post_send 943 static inline int 
> ibv_post_send(struct ibv_qp *qp, struct ibv_send_wr *wr,
> ********* Problem with ibv_post_recv **********
> include/infiniband/kern-abi.h ibv_post_recv 620 struct ibv_post_recv {
> include/infiniband/verbs.h ibv_post_recv 952 static inline int 
> ibv_post_recv(struct ibv_qp *qp, struct ibv_recv_wr *wr,
> ********* Problem with ibv_create_ah **********
> include/infiniband/kern-abi.h ibv_create_ah 652 struct ibv_create_ah {
> src/verbs.c ibv_create_ah 384 struct ibv_ah *ibv_create_ah(struct ibv_pd 
*pd, 
> struct ibv_ah_attr *attr)
> ********* Problem with ibv_destroy_ah **********
> include/infiniband/kern-abi.h ibv_destroy_ah 667 struct ibv_destroy_ah {
> src/verbs.c ibv_destroy_ah 452 int ibv_destroy_ah(struct ibv_ah *ah)
> ********* Problem with ibv_attach_mcast **********
> include/infiniband/kern-abi.h ibv_attach_mcast 674 struct 
ibv_attach_mcast {
> src/verbs.c ibv_attach_mcast 457 int ibv_attach_mcast(struct ibv_qp *qp, 
union
> ibv_gid *gid, uint16_t lid)
> ********* Problem with ibv_detach_mcast **********
> include/infiniband/kern-abi.h ibv_detach_mcast 685 struct 
ibv_detach_mcast {
> src/verbs.c ibv_detach_mcast 462 int ibv_detach_mcast(struct ibv_qp *qp, 
union
> ibv_gid *gid, uint16_t lid)
> 
> That was the reason I wrote separate routines and data structures so 
that
> #defines don't do wrong things. Does that sound reasonable ?
> 
> B.
> -----
> 
> - "Maybe the best approach is to use rdmav_ to replace ibv_" :
> 
> OK, that sounds consistent. Is "rdv_" better than the longer "rdmav_" ?
> 
> C.
> --------
> 
> - "Path records are IB specific.  Not sure we need to rename them" and 
"These
>    changes look fine.  We just need to decide if we want to change 
everything 
>    that's ibv_* to rdma_*, or keep IB specific names (path records, 
GIDs, PKeys, 
>    etc.) the same."
> 
> I had indicated this in my "Information notes" in the [PATCH 0/6] :
>  "IB specific routines are also converted to use RDMA generic API's for 
sake
>  of uniformness (knowing that transport dependent names will be removed
>    once all apps are converted)."
> 
> The issue is between deciding to have either rd(ma)_v or ibv_ for IB 
specific
> structures. Currently there is no other transport other than IB that has 
these
> specific structures, but if that changes it might be better to keep the 
name
> transport agnostic. Another reason that I see at this time is to have 
uniform
> names which means that this library exports names using one prefix - 
this means
> that I do not have to care about the underlying transport type and I 
also do not
> have to remember that ibv_ is for [a, b, c, d] operations and rdma_ is 
for [e, f, g, h]
> operations. What do you feel ?
> 
> D.
> --------
> > > We named ourselves OpenFabrics instead of OpenRDMA for a reason

> > Wasn't OpenRDMA already taken?
> 
> Correct. Also "RDMA" name is a generic enough name and has nothing to do 
with
> openRDMA. Roland had rightly pointed out in my first attempt that usage 
of "#ifdef
> OPENRDMA_xxx" was inappropirate, so I corrected that in this patchset (I 
had
> changed OPENIB to OPENRDMA blindly :)).
> 
> Thanks,
> 
> - KK




More information about the general mailing list