[PATCH][KVM-AUTOTEST] Make code to remove kvm modules more robust

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Mike Burns <mburns@xxxxxxxxxx>
---
 client/tests/kvm_runtest_2/kvm_install.py |   56 ++++++++++++++++++++++++----
 1 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/client/tests/kvm_runtest_2/kvm_install.py b/client/tests/kvm_runtest_2/kvm_install.py
index 5429a65..d1aceb2 100755
--- a/client/tests/kvm_runtest_2/kvm_install.py
+++ b/client/tests/kvm_runtest_2/kvm_install.py
@@ -86,11 +86,11 @@ def run_kvm_install(test, params, env):
             kvm_log.error(message)
             raise error.TestError, message
         for k in params.keys():
-            kvm_log.info("Adding KVM_INSTALL_%s to Environment" % (k))
-            os.putenv("KVM_INSTALL_%s" % (k), str(params[k]))
-        kvm_log.info("Running " + script + " to install kvm")
+	  kvm_log.info("Adding KVM_INSTALL_%s to Environment" % (k))
+          os.putenv("KVM_INSTALL_%s" % (k), str(params[k]))
+	kvm_log.info("Running " + script + " to install kvm")
         os.system("cd %s; %s" % (test.bindir, script))
-        kvm_log.info("Completed %s" % (script))
+	kvm_log.info("Completed %s" % (script))
 
     # invalid installation mode
     else:
@@ -215,11 +215,11 @@ def __load_kvm_modules():
     kvm_log.info("Unloading loaded KVM modules (if present)...")
     #utils.system("pkill qemu 1>/dev/null 2>&1", ignore_status=True)
     utils.system("pkill qemu", ignore_status=True)
-    #if utils.system("grep kvm_%s /proc/modules 1>/dev/null" % vendor, ignore_status=True) == 0:
-    utils.system("/sbin/rmmod kvm_%s" % vendor, ignore_status=True)
-    #if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) == 0:
-    utils.system("/sbin/rmmod kvm", ignore_status=True)
 
+    # Remove existing modules
+    kvm_log.info("Checking KVM module")
+    __unload_modules("kvm")
+        
     if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) == 0:
         message = "Failed to remove old KVM modules"
         kvm_log.error(message)
@@ -241,6 +241,46 @@ def __load_kvm_modules():
         kvm_log.error(message)
         raise error.TestError, message
 
+
+def __unload_modules(module):
+  lsmod = os.popen("lsmod | grep \"^%s \"" % module)
+  line_parts = lsmod.readline().split()
+  if len(line_parts) == 0:
+    kvm_log.info("%s not loaded." % module)
+  else:
+    kvm_log.info("Found module %s, checking for dependecies..." %module)
+    if len(line_parts) == 4:
+      submodules = line_parts[3].split(",")
+      for submodule in submodules:
+        __unload_modules(submodule)
+    else:
+      kvm_log.info("No modules dependent on %s" % module )
+  
+    kvm_log.info("Removing module: %s" % module)
+    utils.system("/sbin/modprobe -r %s" % module, ignore_status=False)
+    
+    
+
+  #line_count = os.popen("lsmod | grep \"^%s \" | wc -l" % module)
+  #if line_count > 0:
+    #kvm_log.info("Found module %s, checking for dependecies..." %module)
+    #dependencies = os.popen("lsmod | grep \"^%s \" | awk '{print $4}'" % module).readline()
+    #submodules = dependencies.split(",")
+    #for submodule in submodules:
+      #__unload_modules(submodule)
+#
+    #
+  #kvm_log.info("Found module %s" % module)
+  #dependencies = os.popen("lsmod | grep \"^%s \" | awk '{print $4}'" % module)
+  #for line in dependencies.readlines():
+    #print "Line: %s" % line
+    #submodules = line.split(",")
+##    for submodule in submodules:
+##      __unload_modules(submodule)
+    #raise error.TestError, "Aborting..."
+    #kvm_log.info("Deleting Module %s" % module)
+    #utils.system("/sbin/modprobe -r %s" % module)
+
 def __install_kvm(test, srcdir):
     # create destination dir
 
-- 
1.5.5.6

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux