[stgt] [PATCH] dynamically link libibverbs and librdma
Pete Wyckoff
pw at padd.com
Wed Sep 24 23:37:35 CEST 2008
ogerlitz at voltaire.com wrote on Wed, 24 Sep 2008 17:12 +0300:
> Pete Wyckoff wrote:
>> If my dlopen() suggestion works, in that it notices the lack of
>> libibverbs at runtime, this would work fine with RPMs:
>>
>> tgt : requires whatever it needs for tcp; provides /usr/sbin/tgtd
>> tgt-rdma : requires tgt, ibverbs, rdmacm; provides libtgt-rdma.so
>>
>> Base tgtd will always go looking for libtgt-rdma.so. If it is successful, it configures up the iSER interface, else it quietly does only iSCSI on TCP.
> Yes, sounds like having two packages would work in the sense that a user
> can always install the base package and would be able to install the
> rdma package if they have the IB stack installed.
>
> I wonder if/how the calls from tgt to tgt-rdma can be implemented
> without the typedefs and device structure holding pointers to function
> which you didn't like in Doron's patch. If this can't be avoided also in
> your approach, I don't see why its more elegant.
I was thinking of something as simple as
void *h = dlopen("libtgt-rdma.so", RTLD_NOW);
that should run the __attribute__((constructor)) function in there,
which registers the iscsi_iser iscsi_transport.
That really should be all you need. Nothing outside of iscsi_rdma.c
sees any of the IB symbols, so we don't need to hack up a fake
include file for them.
Of course I haven't tested this, but it would be pretty if it
worked.
-- 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