https://bugzilla.novell.com/show_bug.cgi?id=397119 Summary: /etc/init.d/boot.multipath is broken in some ways Product: openSUSE 10.3 Version: Final Platform: All OS/Version: openSUSE 10.3 Status: NEW Severity: Critical Priority: P5 - None Component: Booting AssignedTo: jsrain@novell.com ReportedBy: nice@titanic.nyme.hu QAContact: jsrain@novell.com Found By: Other There are multiple problems with the mentioned script: 1.: It is called via a symlink in the /etc/init.d/boot.d directory. It is started before boot.localfs and stopped after boot.localfs, but in its current form it actually depends on boot.localfs, because: 1.a.: In line 54 it calls the cut program which is placed in the /usr/bin directory: maplist=$(/sbin/dmsetup ls --target multipath | sed '/No devices/d' | cut -f 1) This would be solved if /usr/bin/cut was only a symlink pointing to /bin/cut (like in the case of grep, sed, etc.). 1.b.: The multipath utilty (called by boot.multipath) may read the file /var/lib/multipath/bindings. Which cannot be accessed when boot.multipath is called (and there is a separate /var volume). Instead, the multipath utility creates this file on the root partition, which will be masked by the actual /var volume. I manually edited the /var/lib/multipath/bindings to have really friendly names for multipath devices, but my version of that file obviously cannot be seen by boot.multipath. Fortunately, /etc/init.d/multipathd somehow renames the multipath devices according to the manually edited maps, but this might be further improved someway. /etc/init.d/multipathd should, for example copy the /var/lib/multipath/bindings file to some place on the root partition during shutdown, and boot.multipath could move this copied file to the /var/lib/multipath directory on the root partition. This backup copy should be placed in the /etc directory, since /tmp also tends to be placed on a distinct partition. 2.: boot.multipath cannot flush (remove) multipath volumes which have partitions within extended partitions, because kparx is buggy: It tries to remove the volumes - corresponding to partitions, named *-part{n} - in alphabetical order, but when - for example - /dev/mapper/nostromo-part2 is an extended partition, containing /dev/mapper/nostromo-part5 then then /dev/mapper/nostromo-part2 cannot be removed before /dev/mapper/nostromo-part5. So, /dev/mapper/nostromo-part2 won't be deleted, which makes the multipath volume /dev/mapper/nostromo unable to be deleted, and boot.multipath will fail. his could be resolved by repeating the following line in the boot.multipath script: /sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -d -p -part" 2> /dev/null Instead of this, some more elegant solutions cold be done, something like this (using dmsetup instead of kpartx): for MPPART in $(for MPDEV in $(/sbin/dmsetup ls --target multipath --exec echo) ; do ls $MPDEV-part* 2>/dev/null ; done | sort -r) ; do dmsetup remove "$MPPART" ; done -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.