|
@@ -69,6 +69,7 @@ static int dm_reg_value;
|
|
|
static const char vss_devname[] = "vmbus/hv_vss";
|
|
|
static __u8 *recv_buffer;
|
|
|
static struct hvutil_transport *hvt;
|
|
|
+static struct completion release_event;
|
|
|
|
|
|
static void vss_timeout_func(struct work_struct *dummy);
|
|
|
static void vss_handle_request(struct work_struct *dummy);
|
|
@@ -345,11 +346,13 @@ static void vss_on_reset(void)
|
|
|
if (cancel_delayed_work_sync(&vss_timeout_work))
|
|
|
vss_respond_to_host(HV_E_FAIL);
|
|
|
vss_transaction.state = HVUTIL_DEVICE_INIT;
|
|
|
+ complete(&release_event);
|
|
|
}
|
|
|
|
|
|
int
|
|
|
hv_vss_init(struct hv_util_service *srv)
|
|
|
{
|
|
|
+ init_completion(&release_event);
|
|
|
if (vmbus_proto_version < VERSION_WIN8_1) {
|
|
|
pr_warn("Integration service 'Backup (volume snapshot)'"
|
|
|
" not supported on this host version.\n");
|
|
@@ -382,4 +385,5 @@ void hv_vss_deinit(void)
|
|
|
cancel_delayed_work_sync(&vss_timeout_work);
|
|
|
cancel_work_sync(&vss_handle_request_work);
|
|
|
hvutil_transport_destroy(hvt);
|
|
|
+ wait_for_completion(&release_event);
|
|
|
}
|