From f4533a2ceca52c443ddebec01eeaa35d51c39c1b Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 13 Sep 2011 17:41:43 -0700 Subject: [PATCH 1/3] Parallelize block_module_filter --- modules.d/90kernel-modules/module-setup.sh | 22 ++++++++++++++++------ 1 files changed, 16 insertions(+), 6 deletions(-) diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh index 9fc4248..09bd87e 100755 --- a/modules.d/90kernel-modules/module-setup.sh +++ b/modules.d/90kernel-modules/module-setup.sh @@ -11,12 +11,22 @@ installkernel() { } block_module_filter() { local _blockfuncs='ahci_init_controller|ata_scsi_ioctl|scsi_add_host|blk_init_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device' - local _f - while read _f; do case "$_f" in - *.ko) [[ $(< $_f) =~ $_blockfuncs ]] && echo "$_f" ;; - *.ko.gz) [[ $(gzip -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;; - esac - done + function bmf1() { + local _f + while read _f; do case "$_f" in + *.ko) [[ $(< $_f) =~ $_blockfuncs ]] && echo "$_f" ;; + *.ko.gz) [[ $(gzip -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;; + esac + 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 \ + | bmf1 1>&${merge} ) {side2}>&1 \ + | bmf1 ) {merge}>&1 } hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac scsi_dh_emc hostonly='' instmods pcmcia firewire-ohci -- 1.7.6