From 5aadc01b17db78ca3e7ef34b16cced11305fd737 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 13 Sep 2011 17:42:05 -0700 Subject: [PATCH 2/3] Parallelize net_module_filter Conflicts: modules.d/40network/module-setup.sh --- modules.d/40network/module-setup.sh | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 deletions(-) diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh index cb81269..4106cf7 100755 --- a/modules.d/40network/module-setup.sh +++ b/modules.d/40network/module-setup.sh @@ -27,18 +27,26 @@ installkernel() { net_module_filter() { local _net_drivers='eth_type_trans|register_virtio_device' local _unwanted_drivers='/(wireless|isdn|uwb)/' - local _fname - while read _fname; do - local _fcont - case "$_fname" in - *.ko) _fcont="$(< $_fname)" ;; - *.ko.gz) _fcont="$(gzip -dc $_fname)" ;; - esac - [[ $_fcont =~ $_net_drivers - && ! $_fcont =~ iw_handler_get_spy \ - && ! $_fname =~ $_unwanted_drivers ]] \ - && echo "$_fname" - done + function nmf1() { + local _fname _fcont + while read _fname; do + case "$_fname" in + *.ko) _fcont="$(< $_fname)" ;; + *.ko.gz) _fcont="$(gzip -dc $_fname)" ;; + esac + [[ $_fcont =~ $_net_drivers + && ! $_fcont =~ iw_handler_get_spy|$_unwanted_drivers ]] \ + && echo "$_fname" + done + } + # Use two parallel streams to filter alternating modules. + local merge side2 + ( ( local _f1 _f2 + while read _f1; do echo "$_f1" + if read _f2; then echo "$_f2" 1>&${side2}; fi + done \ + | nmf1 1>&${merge} ) {side2}>&1 \ + | nmf1 ) {merge}>&1 } find_kernel_modules_by_path drivers/net | net_module_filter | instmods -- 1.7.6