qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL v3 4/7] rdma: core logic


From: Michael R. Hines
Subject: Re: [Qemu-devel] [PULL v3 4/7] rdma: core logic
Date: Wed, 17 Apr 2013 14:44:33 -0400
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130106 Thunderbird/17.0.2

Thanks. Comments inline....

On 04/17/2013 05:16 AM, Paolo Bonzini wrote:


+/*
+ * Create protection domain and completion queues
+ */
+static int qemu_rdma_alloc_pd_cq(RDMAContext *rdma)
+{
+    /* allocate pd */
+    rdma->pd = ibv_alloc_pd(rdma->verbs);
+    if (!rdma->pd) {
+        fprintf(stderr, "failed to allocate protection domain\n");
+        return -1;
+    }
+
+    /* create completion channel */
+    rdma->comp_channel = ibv_create_comp_channel(rdma->verbs);
+    if (!rdma->comp_channel) {
+        fprintf(stderr, "failed to allocate completion channel\n");
+        goto err_alloc_pd_cq;
+    }
+
+    qemu_set_nonblock(rdma->comp_channel->fd);
Again showing my lack of IB-fu, do you have to test for POLLOUT
somewhere too?  Or does it just work?


There is no output to that file descriptor - it's strictly used for read()
in order to know when events occur.

I've already incorporated the yield() coroutine patch you requested,
so you'll see it in my next posting.

@@ -121,7 +125,6 @@ void process_incoming_migration(QEMUFile *f)
      Coroutine *co = qemu_coroutine_create(process_incoming_migration_co);
      int fd = qemu_get_fd(f);
- assert(fd != -1);
      qemu_set_nonblock(fd);
So in the end you are setting the fd to non-blocking. :)

Please add a get_fd implementation to QEMUFile that returns
rdma->comp_channel->fd, and leave the assertion in place.  The fd will
be set twice to nonblocking, but that's ok.

Cool. =)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]