[Bug 1489379] Re: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10
Mauricio Faria de Oliveira
mauricfo at linux.vnet.ibm.com
Thu Sep 3 21:43:55 UTC 2015
I'm attaching a patch that solves the issue; verification steps below.
It disables -fexceptions when building multipath-udeb.
(I had in mind something more elegant, like only adding -fno-exceptions
from debian/rules into DEB_CFLAGS_MAINT_APPEND as done w/ -static-
libgcc, but that way it doesn't override the post-added -fexceptions in
Makefile.inc).. and found no other variable that would override it w/
less changes. So it's adding a patch to Makefile.inc and it does the
job.)
Some comments with more details/explanation of the issue were not
mirrored yet; should be on their way.
Build verification:
------------------
Checking the build log, the 2 tur.o objects are built correctly:
1) multipath-udeb: with -static-libgcc and without -fexceptions
2) multipath deb: without -static-libgcc and with -fexceptions (default)
$ dpkg-buildpackage 2>&1 | tee ../dpkg-buildpackage.log
$ grep -- '-o tur.o' ../dpkg-buildpackage.log
cc -g -O3 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -static-libgcc -D_FORTIFY_SOURCE=2 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wunused -Wstrict-prototypes -fPIC -DLIB_STRING=\"lib\" -I.. -c -o tur.o tur.c
cc -g -O3 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wunused -Wstrict-prototypes -fPIC -DLIB_STRING=\"lib\" -I.. -c -o tur.o tur.c
Checking the build output, the ELF objects (don't) dyn-link to libgcc_s as appropriate:
1) multipath-udeb: ELF objects don't dyn-link with libgcc_s
2) multipath deb: ELF objects dyn-link with libgcc_s
$ find debian/tmp-multipath-udeb/ | while read file; do file $file | grep -q ELF && objdump -x $file | grep -q 'NEEDED.*libgcc_s' && echo $file needs libgcc_s; done
$
$ find debian/tmp/ | while read file; do file $file | grep -q ELF && objdump -x $file | grep -q 'NEEDED.*libgcc_s' && echo $file needs libgcc_s; done
debian/tmp/lib/libmultipath.so.0 needs libgcc_s
debian/tmp/lib/multipath/libchecktur.so needs libgcc_s
debian/tmp/sbin/multipathd needs libgcc_s
$
Installer verification:
-----------------------
Configure multipath.conf for using tur with QEMU/KVM SCSI disks:
~ # cat <<EOF >/etc/multipath.conf <<EOF
defaults {
user_friendly_names yes
path_checker tur
}
blacklist_exceptions {
property ID_SERIAL
}
EOF
Test (Not OK):
~ # multipath -v3
...
<...> | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory)
...
<...> | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory)
uuid hcil dev dev_t pri dm_st chk_st vend/prod/rev dev_st
0:0:1:0 sda 8:0 -1 undef faulty QEMU,QEMU HARDDISK running
0:0:2:0 sdb 8:16 -1 undef faulty QEMU,QEMU HARDDISK running
...
Install the new udeb:
~ # udpkg -i multipath-
udeb_0.5.0-7ubuntu3fexceptions1_ppc64el.udeb
Re-test (now OK):
~ # multipath -v3
...
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/prod/re
0QEMU_QEMU_HARDDISK_helloworld 0:0:1:0 sda 8:0 1 undef ready QEMU,QEMU HA
0QEMU_QEMU_HARDDISK_helloworld 0:0:2:0 sdb 8:16 1 undef ready QEMU,QEMU HA
...
create: mpatha (0QEMU_QEMU_HARDDISK_helloworld) undef QEMU,QEMU HARDDISK
size=128G features='0' hwhandler='0' wp=undef
|-+- policy='round-robin 0' prio=1 status=undef
| `- 0:0:1:0 sda 8:0 undef ready running
`-+- policy='round-robin 0' prio=1 status=undef
`- 0:0:2:0 sdb 8:16 undef ready running
...
** Patch added: "Disable -fexceptions when building multipath-udeb"
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+attachment/4457034/+files/multipath-tools_disable-fexceptions-udeb.debdiff
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to multipath-tools in Ubuntu.
https://bugs.launchpad.net/bugs/1489379
Title:
LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10
Status in multipath-tools package in Ubuntu:
New
Bug description:
== Comment: #0 - Alton L. Pundt <apundt at us.ibm.com> - 2015-08-24 15:12:28 ==
---Problem Description---
no choice for mpath disks.
They all show up as single disks.
Contact Information = A.P. Pundt apundt at us.ibm.com
---uname output---
4.1.0-3-generic
Machine Type = 8408-E8E
---boot type---
Network boot
---bootloader---
grub
---Kernel cmdline used to launch install---
linux ubuntu-installer/ppc64el/vmlinux tasks=standard pkgsel\|
|/language-pack-patterns= pkgsel/install-language-support=false url=http://1\|
|0.33.11.31/distros/ubuntu/preseed.cfg preseed/url/checksum=edc0fad5d7d5709d\|
|042c734730e8fb3e disk-detect/multipath/enable=true --- quiet |
| initrd ubuntu-installer/ppc64el/initrd.gz |
|
---Bootloader protocol---
http
---Install repository type---
Internet repository
---Install repository Location---
United Kingdon ports.ubuntu.com
---Point of failure---
Other failure during installation (stage 1)
== Comment: #2 - Alton L. Pundt <apundt at us.ibm.com> - 2015-08-24 15:16:58 ==
installer user and password is lte:don2rry
[apundt at kte ~]$ sudo config_dhcpd.py list -H leeklp4
Host Label : leeklp4
Network Type : ethernet
MAC Address : 00:90:fa:95:60:16
IP Address : 10.33.32.110
Server : 10.33.11.31
Filename : ubuntu-installer/ppc64el/powerpc-ieee1275/core.elf
[apundt at kte ~]$
== Comment: #3 - Mauricio Faria De Oliveira <mauricfo at br.ibm.com> - 2015-08-26 12:15:08 ==
Problem here is multipath is not obtaining the paths' identifiers, thus blacklists them all.
I have a good idea of what's happening, from a bug fixed in Debian, probably pending backports to Ubuntu.
I'll check a few things in the LPAR yet.
~ # multipath -v3
...
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/prod/rev dev_st
2:0:7:0 sdm 8:192 -1 undef faulty IBM,2107900 running
2:0:7:1 sdn 8:208 -1 undef faulty IBM,2107900 running
2:0:7:2 sdo 8:224 -1 undef faulty IBM,2107900 running
2:0:7:3 sdp 8:240 -1 undef faulty IBM,2107900 running
2:0:0:0 sdy 65:128 -1 undef faulty IBM,2107900 running
2:0:0:1 sdz 65:144 -1 undef faulty IBM,2107900 running
2:0:0:2 sdaa 65:160 -1 undef faulty IBM,2107900 running
2:0:0:3 sdab 65:176 -1 undef faulty IBM,2107900 running
2:0:1:0 sdac 65:192 -1 undef faulty IBM,2107900 running
2:0:1:1 sdad 65:208 -1 undef faulty IBM,2107900 running
2:0:1:2 sdae 65:224 -1 undef faulty IBM,2107900 running
2:0:1:3 sdaf 65:240 -1 undef faulty IBM,2107900 running
2:0:2:0 sda 8:0 -1 undef faulty IBM,2107900 running
2:0:2:1 sdb 8:16 -1 undef faulty IBM,2107900 running
2:0:2:2 sdc 8:32 -1 undef faulty IBM,2107900 running
2:0:2:3 sdd 8:48 -1 undef faulty IBM,2107900 running
2:0:3:0 sde 8:64 -1 undef faulty IBM,2107900 running
2:0:3:0 sde 8:64 -1 undef faulty IBM,2107900 running
2:0:3:1 sdf 8:80 -1 undef faulty IBM,2107900 running
2:0:3:2 sdg 8:96 -1 undef faulty IBM,2107900 running
2:0:3:3 sdh 8:112 -1 undef faulty IBM,2107900 running
2:0:4:0 sdi 8:128 -1 undef faulty IBM,2107900 running
2:0:4:1 sdj 8:144 -1 undef faulty IBM,2107900 running
2:0:4:2 sdk 8:160 -1 undef faulty IBM,2107900 running
2:0:4:3 sdl 8:176 -1 undef faulty IBM,2107900 running
Aug 26 16:06:41 | sdm: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdn: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdo: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdp: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdy: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdz: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdaa: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdab: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdac: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdad: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdae: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdaf: orphan path, wwid blacklisted
Aug 26 16:06:41 | sda: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdb: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdc: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdd: orphan path, wwid blacklisted
Aug 26 16:06:41 | sde: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdf: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdg: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdh: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdi: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdj: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdk: orphan path, wwid blacklisted
Aug 26 16:06:41 | sdl: orphan path, wwid blacklisted
Also noticed another problem: a broken shared library dependency. (similar story w/ Debian, IIUIC).
I'll open another bug.
Aug 26 16:06:41 | loading /lib/multipath/libchecktur.so checker
Aug 26 16:06:41 | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory)
Aug 26 16:06:41 | unloading tur checker
Aug 26 16:06:41 | sdm: path checker = (controller setting)
== Comment: #6 - Mauricio Faria De Oliveira <mauricfo at br.ibm.com> - 2015-08-26 18:43:40 ==
The uuid (identifier) is null because of the shlib error (libgcc_s.so.1 not found)
when loading a path checker.
In libmultipath/discovery.c, pathinfo() will skip assigning an uuid
if get_state() hits 'No checker (is) selected' (which happened; see message).
get_state() {
...
condlog(3, "%s: No checker selected", pp->dev);
return PATH_UNCHECKED;
...
}
pathinfo() {
...
pp->chkrstate = pp->state = get_state(pp, 0);
if (pp->state == PATH_UNCHECKED ||
pp->state == PATH_WILD)
goto blank;
...
get_uid(pp);
...
blank:
...
}
... | sdm: get_state
... | loading /lib/multipath/libchecktur.so checker
... | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory)
... | unloading tur checker
...
... | sdm: No checker selected
... | Discover device <...>/sdm/sdm1
... | Discover device <...>/sdm/sdm2
... | Discover device <...>/sdm/sdm3
... | Discover device <...>/sdn
... | sdn: udev property ID_WWN whitelisted
There's no libgcc in the installer.
~ # find /lib/ -name '*gcc*'
~ #
Tried overriding the path checker, but the setting is taken from the hardcoded value (hwentry),
and even changing the tur checker library for another one which don't depend on libgcc didn't work
-- it seems the piece dependening on libgcc is required for the load operation, not a library.
~ # for lib in /lib/multipath/libcheck*.so; do echo $lib; grep -a libgcc_s.so.1 $lib >/dev/null; echo $?; done
/lib/multipath/libcheckcciss_tur.so
1
/lib/multipath/libcheckdirectio.so
1
/lib/multipath/libcheckemc_clariion.so
1
/lib/multipath/libcheckhp_sw.so
1
/lib/multipath/libcheckrdac.so
1
/lib/multipath/libcheckreadsector0.so
1
/lib/multipath/libchecktur.so
0
~ # mv /lib/multipath/libchecktur.so /lib/multipath/libchecktur.so.orig
~ # ln -s /lib/multipath/libcheckdirectio.so /lib/multipath/libchecktur.so
~ # multipath -v3
...
... | loading /lib/multipath/libchecktur.so checker
... | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory)
... | unloading tur checker
...
== Comment: #8 - Mauricio Faria De Oliveira <mauricfo at br.ibm.com> - 2015-08-26 18:57:56 ==
Ubuntu actually does contain the fix for static libgcc from Debian [1],
but it's not working on Ubuntu for some reason.
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=779579#50
== Comment: #9 - Mauricio Faria De Oliveira <mauricfo at br.ibm.com> - 2015-08-26 19:16:42 ==
(In reply to comment #8)
> but it's not working on Ubuntu for some reason.
Or not working for specific files for some reason :)
The -static-libgcc parameter is correctly being carried over in the build, but libchecktur doesn't get it.
And for some reason it's the only libcheck* that uses libgcc.
Checking all libs in multipath-udeb for libgcc:
~/mpathudeb$ find lib/ -name '*.so' -print -exec grep -H libgcc '{}' ';'
lib/multipath/libpriordac.so
lib/multipath/libpriodatacore.so
lib/multipath/libcheckrdac.so
lib/multipath/libcheckemc_clariion.so
lib/multipath/libpriorandom.so
lib/multipath/libprioontap.so
lib/multipath/libprioconst.so
lib/multipath/libcheckreadsector0.so
lib/multipath/libcheckhp_sw.so
lib/multipath/libpriohp_sw.so
lib/multipath/libpriohds.so
lib/multipath/libprioweightedpath.so
lib/multipath/libcheckdirectio.so
lib/multipath/libchecktur.so
Binary file lib/multipath/libchecktur.so matches
lib/multipath/libcheckcciss_tur.so
lib/multipath/libprioiet.so
lib/multipath/libprioalua.so
lib/multipath/libprioemc.so
Checking the build log [1] for -static-libgcc (in there).
Maybe it's also required in the last cc command as well.
make[2]: Entering directory '/?PKGBUILDDIR?/libmultipath/checkers'
cc -g -O3 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -static-libgcc -D_FORTIFY_SOURCE=2 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wunused -Wstrict-prototypes -fPIC -DLIB_STRING=\"lib\" -I.. -c -o libsg.o libsg.c
...
cc -g -O3 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -static-libgcc -D_FORTIFY_SOURCE=2 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wunused -Wstrict-prototypes -fPIC -DLIB_STRING=\"lib\" -I.. -c -o tur.o tur.c
cc -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -shared -o libchecktur.so libsg.o tur.o
[1] https://launchpadlibrarian.net/213493168/buildlog_ubuntu-wily-
ppc64el.multipath-tools_0.5.0-7ubuntu3_BUILDING.txt.gz
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions
More information about the foundations-bugs
mailing list