[stgt] [PATCH] dynamically link libibverbs and librdma
    Pete Wyckoff 
    pw at padd.com
       
    Mon Sep 22 23:07:16 CEST 2008
    
    
  
dorons at Voltaire.COM wrote on Sun, 21 Sep 2008 08:34 +0300:
> dynamically link libibverbs and librdma for using
> stgt without having userspace IB (e.g tcp mode).
I like the idea, but the implementation is quite ugly.  Is there any
better way to do it?  What other projects do dynamic linking to IB
like this?
> +typedef void (*ibv_ack_cq_events_t)(struct ibv_cq *cq, unsigned int nevents);
> +typedef struct ibv_pd *(*ibv_alloc_pd_t)(struct ibv_context *context);
> +typedef struct ibv_comp_channel *(*ibv_create_comp_channel_t)(struct ibv_context *context);
> +typedef struct ibv_cq *(*ibv_create_cq_t)(struct ibv_context *context, int cqe,
> +                              void *cq_context,
> +                              struct ibv_comp_channel *channel,
> +                              int comp_vector);
[..]
This particularly feels wrong.  We have to duplicate the function
declarations from verbs.h inside tgt?
> -	conn->srmr = ibv_reg_mr(conn->dev->pd, conn->srbuf, size,
> +	conn->srmr = tgt_fptr.ibv_reg_mr(conn->dev->pd, conn->srbuf, size,
>  				IBV_ACCESS_LOCAL_WRITE);
Is this really the only way?  All calls have to go through this big
table of function pointers?
What about compiling libtgt-rdma.so using existing verbs, then
figure out if you can dlopen() that successfully.  Maybe if you say
RTLD_NOW and libverbs.so is not present, the dlopen will fail and
you can fall back to non-IB mode.
		-- Pete
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
    
    
More information about the stgt
mailing list