]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
multipath: fix majmin_to_mpath_dev()
authorPekka Wallendahl <wyrmiyu@gmail.com>
Mon, 18 Jan 2016 18:28:22 +0000 (20:28 +0200)
committerHarald Hoyer <harald@redhat.com>
Mon, 29 Feb 2016 10:43:18 +0000 (11:43 +0100)
* Multipath device names only start with the mpath-prefix if the option
  use_userfriendly_names is set true in /etc/multipath.conf and if user
  has not set any aliases in the said file. Thus the for-loop should go
  through all files in /dev/mapper/, not just ones starting with 'mpath'

* Bash is perfectly capable to extend `/dev/mapper/*` notation without a
  need to pass it to an external ls

* Changed the function to use a local variable $_dev instead of the
  global $dev, which seemed to be the original intention as the local
  _dev was defined but not used

(cherry picked from commit 28058a2e373eb268d9b1cd5b65c2ad607961dad1)

modules.d/90multipath/module-setup.sh

index 4971d18d4ae2a850d2d8dee0e034122734b31357..3983b7b7441f0205fdfdcbc9fb46454433baeef0 100755 (executable)
@@ -11,9 +11,10 @@ is_mpath() {
 
 majmin_to_mpath_dev() {
     local _dev
-    for i in `ls -1 /dev/mapper/mpath*`; do
-        dev=$(get_maj_min $i)
-        if [ "$dev" = "$1" ]; then
+    for i in /dev/mapper/*; do
+        [[ $i == /dev/mapper/control ]] && continue
+        _dev=$(get_maj_min $i)
+        if [ "$_dev" = "$1" ]; then
             echo $i
             return
         fi