CA-350871: Log if LVHD snapshot pauses VM for more than 60secs

From: Mark Syms <mark.syms@citrix.com>

Signed-off-by: Mark Syms <mark.syms@citrix.com>
---
 drivers/LVHDSR.py |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/LVHDSR.py b/drivers/LVHDSR.py
index b84d5ec..c258999 100755
--- a/drivers/LVHDSR.py
+++ b/drivers/LVHDSR.py
@@ -27,7 +27,9 @@ import lvmcache
 import vhdutil
 import lvhdutil
 import scsiutil
-import os, sys
+import os
+import sys
+import time
 import errno
 import xs_errors
 import cleanup
@@ -80,6 +82,8 @@ OPS_EXCLUSIVE = [
         "sr_update", "vdi_create", "vdi_delete", "vdi_resize", "vdi_snapshot",
         "vdi_clone" ]
 
+# Log if snapshot pauses VM for more than this many seconds
+LONG_SNAPTIME = 60
 
 class LVHDSR(SR.SR):
     DRIVER_TYPE = 'lvhd'
@@ -1682,6 +1686,7 @@ class LVHDVDI(VDI.VDI):
         else:
             consistency_state = None
 
+        pause_time = time.time()
         if not blktap2.VDI.tap_pause(self.session, sr_uuid, vdi_uuid):
             raise util.SMException("failed to pause VDI %s" % vdi_uuid)
         
@@ -1697,6 +1702,10 @@ class LVHDVDI(VDI.VDI):
                         '%s (error ignored)' % e2)
             raise
         blktap2.VDI.tap_unpause(self.session, sr_uuid, vdi_uuid, secondary)
+        unpause_time = time.time()
+        if (unpause_time - pause_time) > LONG_SNAPTIME:
+            util.SMlog('WARNING: snapshot paused VM for %s seconds' %
+                       (unpause_time - pause_time))
         return snapResult
 
     def _snapshot(self, snapType, cloneOp = False, cbtlog = None, cbt_consistency = None):
