[Drbd-dev] fix %preun script in drbd-km.spec from 8.3 package

Alessandro Bono alessandro.bono at gmail.com
Mon Oct 29 21:52:16 CET 2012


On 10/29/2012 11:22 AM, Lars Ellenberg wrote:
> On Fri, Oct 26, 2012 at 01:03:01PM +0000, Alessandro Bono wrote:
>> Hi
>>
>> %preun script in drbd-km.spec try to unload drbd.ko if present without check kernel version running
>> without this patch it's not possible to remove drbd-km package of old kernel
> ... unless you first unload the current DRBD module as well,
> or use rpm -e --noscript.
>
> Which in fact is intentional, to prevent people from "accidentally"
> uninstall a module package while the provided module is still in use
> (it may have been symlinked in place into some other kernel version
>   by some weak-module magic, or explicitly).
>
> But yes, it may be annoying at times.
>
> So maybe
> filename=$(modinfo -F filename drbd)
> filename=$(readlink "$filename")
> rpm -qf $filename
> and check if that is in fact the current package?
ok I cooked this patch
tested removing drbd for old and in use kernel on centos 6
please check readlink option, -e seems to me correct one but not sure

--- drbd-8.3.14/drbd-km.spec    2012-10-29 17:39:48.786446160 +0100
+++ drbd-8.3.14.my/drbd-km.spec 2012-10-29 21:50:20.470461556 +0100
@@ -80,10 +80,16 @@
  rm -rf %{buildroot}
                                                                                                                                                                                                                                          
  %preun %{krelver}
+filename=$(modinfo -F filename drbd)
+filename=$(readlink -e "$filename")
+drbdrpm=$(rpm -qf "$filename")
+arch=$(uname -i)
+if [ $drbdrpm = %{name}-%{krelver}-%{version}-%{release}.$arch ]; then
  lsmod | grep drbd > /dev/null 2>&1
  if [ $? -eq 0 ]; then
      rmmod drbd
  fi
+fi
                                                                                                                                                                                                                                          
  %post %{krelver}
  # hack for distribution kernel packages,



>> --- drbd-8.3.13/drbd-km.spec    2012-10-26 13:43:43.163366400 +0200
>> +++ drbd-8.3.13.my/drbd-km.spec 2012-10-26 13:44:33.368384889 +0200
>> @@ -80,10 +80,12 @@
>>   rm -rf %{buildroot}
>>
>>   %preun %{krelver}
>> +if [ 'uname -r' = %{kernelversion} ]; then
>>   lsmod | grep drbd > /dev/null 2>&1
>>   if [ $? -eq 0 ]; then
>>       rmmod drbd
>>   fi
>> +fi
>>
>>   %post %{krelver}
>>   # hack for distribution kernel packages,


-- 
Cordiali Saluti
Alessandro Bono



More information about the drbd-dev mailing list