Skip to contentSkip to conversation

9prdma: RDMA Transport Support for 9P

PATCH In review Tom Tucker 3 participants 3 messages Oct 7, 2008 – Oct 10, 2008 9P file system

lore
Share & tools
lore

Tom Tucker

author
#0 lore raw

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
index ff34c5a..c42c0c4 100644
@@ -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
index 5192194..bc909ab 100644
@@ -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

#1 lore raw
Quoted 2 lines · Tom Tucker

(in cq_comp_handler)
+ struct p9_rdma_context *c = (void *)wc.wr_id;

...

Quoted 3 lines

+static int
+post_recv(struct p9_trans *trans, struct p9_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

#2 lore raw
Quoted 2 lines
Quoted 2 lines

(in cq_comp_handler)
+ struct p9_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(struct p9_trans *trans, struct p9_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.