Merge tag 'gfs2-4.8.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2...
[cascardo/linux.git] / drivers / hv / hv_fcopy.c
index 23c7079..8b2ba98 100644 (file)
@@ -83,6 +83,12 @@ static void fcopy_timeout_func(struct work_struct *dummy)
        hv_poll_channel(fcopy_transaction.recv_channel, fcopy_poll_wrapper);
 }
 
+static void fcopy_register_done(void)
+{
+       pr_debug("FCP: userspace daemon registered\n");
+       hv_poll_channel(fcopy_transaction.recv_channel, fcopy_poll_wrapper);
+}
+
 static int fcopy_handle_handshake(u32 version)
 {
        u32 our_ver = FCOPY_CURRENT_VERSION;
@@ -94,7 +100,8 @@ static int fcopy_handle_handshake(u32 version)
                break;
        case FCOPY_VERSION_1:
                /* Daemon expects us to reply with our own version */
-               if (hvutil_transport_send(hvt, &our_ver, sizeof(our_ver)))
+               if (hvutil_transport_send(hvt, &our_ver, sizeof(our_ver),
+                   fcopy_register_done))
                        return -EFAULT;
                dm_reg_value = version;
                break;
@@ -107,8 +114,7 @@ static int fcopy_handle_handshake(u32 version)
                 */
                return -EINVAL;
        }
-       pr_debug("FCP: userspace daemon ver. %d registered\n", version);
-       hv_poll_channel(fcopy_transaction.recv_channel, fcopy_poll_wrapper);
+       pr_debug("FCP: userspace daemon ver. %d connected\n", version);
        return 0;
 }
 
@@ -161,7 +167,7 @@ static void fcopy_send_data(struct work_struct *dummy)
        }
 
        fcopy_transaction.state = HVUTIL_USERSPACE_REQ;
-       rc = hvutil_transport_send(hvt, out_src, out_len);
+       rc = hvutil_transport_send(hvt, out_src, out_len, NULL);
        if (rc) {
                pr_debug("FCP: failed to communicate to the daemon: %d\n", rc);
                if (cancel_delayed_work_sync(&fcopy_timeout_work)) {