summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hv/hv_snapshot.c9
-rw-r--r--tools/hv/hv_vss_daemon.c3
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/hv/hv_snapshot.c b/drivers/hv/hv_snapshot.c
index c4013c859bcd..a6707133c297 100644
--- a/drivers/hv/hv_snapshot.c
+++ b/drivers/hv/hv_snapshot.c
@@ -142,6 +142,11 @@ static int vss_on_msg(void *msg, int len)
142 return vss_handle_handshake(vss_msg); 142 return vss_handle_handshake(vss_msg);
143 } else if (vss_transaction.state == HVUTIL_USERSPACE_REQ) { 143 } else if (vss_transaction.state == HVUTIL_USERSPACE_REQ) {
144 vss_transaction.state = HVUTIL_USERSPACE_RECV; 144 vss_transaction.state = HVUTIL_USERSPACE_RECV;
145
146 if (vss_msg->vss_hdr.operation == VSS_OP_HOT_BACKUP)
147 vss_transaction.msg->vss_cf.flags =
148 VSS_HBU_NO_AUTO_RECOVERY;
149
145 if (cancel_delayed_work_sync(&vss_timeout_work)) { 150 if (cancel_delayed_work_sync(&vss_timeout_work)) {
146 vss_respond_to_host(vss_msg->error); 151 vss_respond_to_host(vss_msg->error);
147 /* Transaction is finished, reset the state. */ 152 /* Transaction is finished, reset the state. */
@@ -202,6 +207,7 @@ static void vss_handle_request(struct work_struct *dummy)
202 */ 207 */
203 case VSS_OP_THAW: 208 case VSS_OP_THAW:
204 case VSS_OP_FREEZE: 209 case VSS_OP_FREEZE:
210 case VSS_OP_HOT_BACKUP:
205 if (vss_transaction.state < HVUTIL_READY) { 211 if (vss_transaction.state < HVUTIL_READY) {
206 /* Userspace is not registered yet */ 212 /* Userspace is not registered yet */
207 vss_respond_to_host(HV_E_FAIL); 213 vss_respond_to_host(HV_E_FAIL);
@@ -210,9 +216,6 @@ static void vss_handle_request(struct work_struct *dummy)
210 vss_transaction.state = HVUTIL_HOSTMSG_RECEIVED; 216 vss_transaction.state = HVUTIL_HOSTMSG_RECEIVED;
211 vss_send_op(); 217 vss_send_op();
212 return; 218 return;
213 case VSS_OP_HOT_BACKUP:
214 vss_transaction.msg->vss_cf.flags = VSS_HBU_NO_AUTO_RECOVERY;
215 break;
216 case VSS_OP_GET_DM_INFO: 219 case VSS_OP_GET_DM_INFO:
217 vss_transaction.msg->dm_info.flags = 0; 220 vss_transaction.msg->dm_info.flags = 0;
218 break; 221 break;
diff --git a/tools/hv/hv_vss_daemon.c b/tools/hv/hv_vss_daemon.c
index 5d51d6ff08e6..e0829809c897 100644
--- a/tools/hv/hv_vss_daemon.c
+++ b/tools/hv/hv_vss_daemon.c
@@ -250,6 +250,9 @@ int main(int argc, char *argv[])
250 syslog(LOG_ERR, "/etc/fstab and /proc/mounts"); 250 syslog(LOG_ERR, "/etc/fstab and /proc/mounts");
251 } 251 }
252 break; 252 break;
253 case VSS_OP_HOT_BACKUP:
254 syslog(LOG_INFO, "VSS: op=CHECK HOT BACKUP\n");
255 break;
253 default: 256 default:
254 syslog(LOG_ERR, "Illegal op:%d\n", op); 257 syslog(LOG_ERR, "Illegal op:%d\n", op);
255 } 258 }