Drivers: hv: balloon: Initialize the transaction ID just before sending the packet
authorK. Y. Srinivasan <kys@microsoft.com>
Thu, 18 Jul 2013 00:27:27 +0000 (17:27 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Jul 2013 23:40:42 +0000 (16:40 -0700)
Each message sent from the guest carries with it a transaction ID.
Assign the transaction ID just before putting the message on the VMBUS.
This would help in debugging on the host side.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hv/hv_balloon.c

index 4c605c70ebf9ed858d014d94383ebfab86851b1f..8dd08c029da25eb2e22edcc872bef7b8ba880457 100644 (file)
@@ -828,7 +828,6 @@ static void hot_add_req(struct work_struct *dummy)
        memset(&resp, 0, sizeof(struct dm_hot_add_response));
        resp.hdr.type = DM_MEM_HOT_ADD_RESPONSE;
        resp.hdr.size = sizeof(struct dm_hot_add_response);
-       resp.hdr.trans_id = atomic_inc_return(&trans_id);
 
 #ifdef CONFIG_MEMORY_HOTPLUG
        pg_start = dm->ha_wrk.ha_page_range.finfo.start_page;
@@ -890,6 +889,7 @@ static void hot_add_req(struct work_struct *dummy)
                pr_info("Memory hot add failed\n");
 
        dm->state = DM_INITIALIZED;
+       resp.hdr.trans_id = atomic_inc_return(&trans_id);
        vmbus_sendpacket(dm->dev->channel, &resp,
                        sizeof(struct dm_hot_add_response),
                        (unsigned long)NULL,
@@ -1076,7 +1076,6 @@ static void balloon_up(struct work_struct *dummy)
                bl_resp = (struct dm_balloon_response *)send_buffer;
                memset(send_buffer, 0, PAGE_SIZE);
                bl_resp->hdr.type = DM_BALLOON_RESPONSE;
-               bl_resp->hdr.trans_id = atomic_inc_return(&trans_id);
                bl_resp->hdr.size = sizeof(struct dm_balloon_response);
                bl_resp->more_pages = 1;
 
@@ -1104,6 +1103,7 @@ static void balloon_up(struct work_struct *dummy)
                 */
 
                do {
+                       bl_resp->hdr.trans_id = atomic_inc_return(&trans_id);
                        ret = vmbus_sendpacket(dm_device.dev->channel,
                                                bl_resp,
                                                bl_resp->hdr.size,