diff mbox

[KVM-AUTOTEST] Instead of trying to remove kvm modules with rmmod, use modprobe -r, as it handles module dependencies better

Message ID 1242338026.2554.44.camel@localhost.localdomain (mailing list archive)
State New, archived
Headers show

Commit Message

Lucas Meneghel Rodrigues May 14, 2009, 9:53 p.m. UTC
In certain situations, trying to do a rmmod on the kvm modules might
generate errors, as there is a chain of dependencies involved. Instead,
let's use modprobe -r, as it handles dependencies.

Signed-off-by: Lucas Meneghel Rodrigues <mrodrigu@redhat.com>

Comments

Mike Burns May 19, 2009, 5:26 p.m. UTC | #1
Lucas Meneghel Rodrigues wrote:
> In certain situations, trying to do a rmmod on the kvm modules might
> generate errors, as there is a chain of dependencies involved. Instead,
> let's use modprobe -r, as it handles dependencies.
>
> Signed-off-by: Lucas Meneghel Rodrigues <mrodrigu@redhat.com>
>
> diff --git a/client/tests/kvm_runtest_2/kvm_install.py b/client/tests/kvm_runtes
> index dbf8401..c27c6c7 100755
> --- a/client/tests/kvm_runtest_2/kvm_install.py
> +++ b/client/tests/kvm_runtest_2/kvm_install.py
> @@ -192,9 +192,9 @@ def __load_kvm_modules():
>      #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_s
> -    utils.system("/sbin/rmmod kvm_%s" % vendor, ignore_status=True)
> +    utils.system("/sbin/modprobe -r kvm_%s" % vendor, ignore_status=True)
>      #if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) 
> -    utils.system("/sbin/rmmod kvm", ignore_status=True)
> +    utils.system("/sbin/modprobe -r kvm", ignore_status=True)
>  
>      if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) =
>          message = "Failed to remove old KVM modules"
>
>   
In normal situations, this works perfectly fine.  It also suppresses the
output to stderr if a module is not already loaded on the machine. 
Errors are are still encountered, however, if another module is
installed that depends on one of the modules kvm_install is trying to
remove.  In my environment, I have a module, ksm, which depends on kvm
being loaded.  If I modprobe -r kvm, them it will fail saying "Module
kvm is in use".  Overall, this is a minimal impact change that doesn't
cause any problems, but it doesn't seem to address the initial problem
of having other modules that depend on one of the kvm modules. 

Mike
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Avi Kivity May 24, 2009, 2:54 p.m. UTC | #2
Mike Burns wrote:
> Lucas Meneghel Rodrigues wrote:
>   
>> In certain situations, trying to do a rmmod on the kvm modules might
>> generate errors, as there is a chain of dependencies involved. Instead,
>> let's use modprobe -r, as it handles dependencies.
>>
>> Signed-off-by: Lucas Meneghel Rodrigues <mrodrigu@redhat.com>
>>
>> diff --git a/client/tests/kvm_runtest_2/kvm_install.py b/client/tests/kvm_runtes
>> index dbf8401..c27c6c7 100755
>> --- a/client/tests/kvm_runtest_2/kvm_install.py
>> +++ b/client/tests/kvm_runtest_2/kvm_install.py
>> @@ -192,9 +192,9 @@ def __load_kvm_modules():
>>      #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_s
>> -    utils.system("/sbin/rmmod kvm_%s" % vendor, ignore_status=True)
>> +    utils.system("/sbin/modprobe -r kvm_%s" % vendor, ignore_status=True)
>>      #if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) 
>> -    utils.system("/sbin/rmmod kvm", ignore_status=True)
>> +    utils.system("/sbin/modprobe -r kvm", ignore_status=True)
>>  
>>      if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) =
>>          message = "Failed to remove old KVM modules"
>>
>>   
>>     
> In normal situations, this works perfectly fine.  It also suppresses the
> output to stderr if a module is not already loaded on the machine. 
> Errors are are still encountered, however, if another module is
> installed that depends on one of the modules kvm_install is trying to
> remove.  In my environment, I have a module, ksm, which depends on kvm
> being loaded.  If I modprobe -r kvm, them it will fail saying "Module
> kvm is in use".  Overall, this is a minimal impact change that doesn't
> cause any problems, but it doesn't seem to address the initial problem
> of having other modules that depend on one of the kvm modules. 
>   

Ignoring status is a recipe for disaster.  Instead we should check if 
the modules are loaded and only unload then (and fail if we can't).
diff mbox

Patch

diff --git a/client/tests/kvm_runtest_2/kvm_install.py b/client/tests/kvm_runtes
index dbf8401..c27c6c7 100755
--- a/client/tests/kvm_runtest_2/kvm_install.py
+++ b/client/tests/kvm_runtest_2/kvm_install.py
@@ -192,9 +192,9 @@  def __load_kvm_modules():
     #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_s
-    utils.system("/sbin/rmmod kvm_%s" % vendor, ignore_status=True)
+    utils.system("/sbin/modprobe -r kvm_%s" % vendor, ignore_status=True)
     #if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) 
-    utils.system("/sbin/rmmod kvm", ignore_status=True)
+    utils.system("/sbin/modprobe -r kvm", ignore_status=True)
 
     if utils.system("grep kvm /proc/modules 1>/dev/null", ignore_status=True) =
         message = "Failed to remove old KVM modules"