[arch-general] [PATCH] rc.sysinit: only call modprobe once
Kurt J. Bosch
kjb-temp-2009 at alpenjodel.de
Mon Sep 20 11:39:25 EDT 2010
2010-09-20 04:10, Dave Reisner:
> On Mon, Sep 20, 2010 at 11:57:06AM +1000, Allan McRae wrote:
>> On 20/09/10 11:54, Dave Reisner wrote:
>>> Use modprobe -a and a bash PE to filter the MODULES array.
>>>
>>> Signed-off-by: Dave Reisner<d at falconindy.com>
>>> ---
>>> rc.sysinit | 12 ++++--------
>>> 1 files changed, 4 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/rc.sysinit b/rc.sysinit
>>> index 09d5e97..4b6e1e7 100755
>>> --- a/rc.sysinit
>>> +++ b/rc.sysinit
>>> @@ -92,14 +92,10 @@ if /bin/pidof -o %PPID /sbin/udevd>/dev/null; then
>>> fi
>>>
>>> # Load modules from the MODULES array defined in rc.conf
>>> -if [[ $load_modules != off&& -f /proc/modules ]]; then
>>> - stat_busy "Loading Modules"
>>> - for mod in "${MODULES[@]}"; do
>>> - if [[ $mod = ${mod#!} ]]; then
>>> - /sbin/modprobe $mod
>>> - fi
>>> - done
>>> - stat_done
>>> +if [[ $load_modules != off&& -f /proc/modules ]]&& (( ${#MODULES[@]}> 0 )); then
>>> + stat_busy "Loading Modules"
>>> + /sbin/modprobe -a "${MODULES[@]/#\!*/}"
>>> + stat_done
>>> fi
>>>
>>> # Wait for udev uevents
>>
>> Does this still work in the "null" case where there is only modules
>> specified with "!" in the front?
>>
>> Allan
>>
>
> Excellent observation -- it would not. Counting the size of the array
> with the PE in place isn't possible (or desirable), either. Perhaps a
> more graceful solution is to reassign the output of the PE to a new
> array and operate based on that. Certainly still beats calling modprobe
> for every element in the array, imo.
>
> d
>
I think it could be done like so:
From 6465c90fc851b12cfce791228415ae1c2823e050 Mon Sep 17 00:00:00 2001
From: Kurt J. Bosch <kjb-temp-2009 at alpenjodel.de>
Date: Mon, 20 Sep 2010 17:31:54 +0200
Subject: [PATCH] rc.sysinit: only call modprobe once (as proposed by
Dave Reisner)
---
rc.sysinit | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/rc.sysinit b/rc.sysinit
index 09d5e97..07b3f67 100755
--- a/rc.sysinit
+++ b/rc.sysinit
@@ -92,13 +92,10 @@ if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then
fi
# Load modules from the MODULES array defined in rc.conf
-if [[ $load_modules != off && -f /proc/modules ]]; then
+modules=$( echo ${MODULES[*]/\!*/} )
+if [[ $modules && $load_modules != off && -f /proc/modules ]]; then
stat_busy "Loading Modules"
- for mod in "${MODULES[@]}"; do
- if [[ $mod = ${mod#!} ]]; then
- /sbin/modprobe $mod
- fi
- done
+ /sbin/modprobe -a $modules
stat_done
fi
--
1.7.0.3
More information about the arch-general
mailing list