9prdma: RDMA Transport Support for 9P
PATCH 1/1 9prdma: RDMA Transport Support for 9P
Eric:
It looks like my mailer munged the first one. Sorry...
This updated patch reflects review comments from Roland and the addition of RQ overflow protection for Tflush'd requests. The code was run through sparse and is clean.
Thanks to Roland for his thorough review.
This patch implements the RDMA transport provider for 9P. It allows mounts to be performed over iWARP and IB capable network interfaces.
--- net/9p/Kconfig | 6 + net/9p/Makefile | 4 + net/9p/trans_rdma.c | 1019 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1029 insertions(+), 0 deletions(-)
net/9p/Kconfig +6 -0
@@ -20,6 +20,12 @@ config NET_9P_VIRTIO This builds support for a transports between guest partitions and a host partition. +config NET_9P_RDMA + depends on NET_9P && INFINIBAND && EXPERIMENTAL + tristate "9P RDMA Transport (Experimental)" + help + This builds support for a RDMA transport. + config NET_9P_DEBUG bool "Debug information" depends on NET_9P
net/9p/Makefile +4 -0
@@ -1,5 +1,6 @@ obj-$(CONFIG_NET_9P) := 9pnet.o obj-$(CONFIG_NET_9P_VIRTIO) += 9pnet_virtio.o +obj-$(CONFIG_NET_9P_RDMA) += 9pnet_rdma.o 9pnet-objs := \ mod.o \
@@ -12,3 +13,6 @@ obj-$(CONFIG_NET_9P_VIRTIO) += 9pnet_virtio.o 9pnet_virtio-objs := \ trans_virtio.o \ + +9pnet_rdma-objs := \ + trans_rdma.o \
net/9p/trans_rdma.c new file +1019 -0
1,019 lines not on this page · raw message
Quoted 2 lines · Tom Tucker
(in
cq_comp_handler)
+ structp9_rdma_context*c = (void *)wc.wr_id;
...
Quoted 3 lines
+static int
+post_recv(structp9_trans*trans, structp9_rdma_context*c)
+ wr.wr_id = (u64)c;
...
Ouch. I get warnings on these two compiling on 32-bit systems.
I'm almost finished with a patch to your patch which fits it into the new organizational structure and API. I'll try to send it by the end of the day. I don't currently have an Infiniband test setup, so I'm only going to be able to check that it builds....
-eric
Quoted 2 lines
Quoted 2 lines
(in
cq_comp_handler)
+ structp9_rdma_context*c = (void *)wc.wr_id;
cast here should be
struct p9_rdma_context *c = (void *) (unsigned long) wc.wr_id;
Quoted 4 lines
...
Quoted 3 lines
+static int
+post_recv(structp9_trans*trans, structp9_rdma_context*c)
+ wr.wr_id = (u64)c;
and this should be
wr.wr_id = (unsigned long) c;
Quoted 1 line
Ouch. I get warnings on these two compiling on 32-bit systems.