[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