Blame 0009-dracut-functions-speed-up-inst_dir.patch

Harald Hoyer 55891e
From a76dc2780143a4b04eb33a6699ec2ca7a7898b65 Mon Sep 17 00:00:00 2001
Harald Hoyer 55891e
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 55891e
Date: Fri, 19 Aug 2011 10:24:49 +0200
Harald Hoyer 55891e
Subject: [PATCH] dracut-functions: speed up inst_dir()
Harald Hoyer 55891e
Harald Hoyer 55891e
---
Harald Hoyer 55891e
 dracut-functions |   18 +++++++++---------
Harald Hoyer 55891e
 1 files changed, 9 insertions(+), 9 deletions(-)
Harald Hoyer 55891e
Harald Hoyer 55891e
diff --git a/dracut-functions b/dracut-functions
Harald Hoyer 55891e
index 241d89a..d7f2e5f 100755
Harald Hoyer 55891e
--- a/dracut-functions
Harald Hoyer 55891e
+++ b/dracut-functions
Harald Hoyer 55891e
@@ -274,18 +274,18 @@ inst_dir() {
Harald Hoyer 55891e
     local _oldifs="$IFS"
Harald Hoyer 55891e
     local _part
Harald Hoyer 55891e
     local _dir="$1"
Harald Hoyer 55891e
-    IFS="/"
Harald Hoyer 55891e
-    set -- $_dir
Harald Hoyer 55891e
-    IFS=$_oldifs
Harald Hoyer 55891e
-    _dir="$@"
Harald Hoyer 55891e
+
Harald Hoyer 55891e
+    # fast out
Harald Hoyer 55891e
     [[ -e ${initdir}$_dir ]] && return 0
Harald Hoyer 55891e
 
Harald Hoyer 55891e
-    # iterate over parent directories
Harald Hoyer 55891e
-    for _part in $_dir; do
Harald Hoyer 55891e
-        [[ $_part ]] || continue
Harald Hoyer 55891e
-        _file="$_file/$_part"
Harald Hoyer 55891e
-        [[ -e ${initdir}$_file ]] && continue
Harald Hoyer 55891e
+    _part=${_dir%/*}
Harald Hoyer 55891e
+    while ! [[ -e "${initdir}${_part}" ]]; do
Harald Hoyer 55891e
+        _dir="$_part $_dir"
Harald Hoyer 55891e
+        _part=${_part%/*}
Harald Hoyer 55891e
+    done
Harald Hoyer 55891e
 
Harald Hoyer 55891e
+    # iterate over parent directories
Harald Hoyer 55891e
+    for _file in $_dir; do
Harald Hoyer 55891e
         if [[ -L $_file ]]; then
Harald Hoyer 55891e
             # create link as the original
Harald Hoyer 55891e
             local target=$(readlink -f "$_file")