[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-18 Thread bugproxy
--- Comment From afana...@us.ibm.com 2015-09-18 21:27 EDT---
*** Bug 129488 has been marked as a duplicate of this bug. ***

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-15 Thread bugproxy
--- Comment From cha...@us.ibm.com 2015-09-16 01:07 EDT---
I can see the multipath choices on the installation menu and able to install 
the rootvg on one of the multipath disk using SAN storages. System boots up 
normal after all.

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-03 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-03 12:25 EDT---
> Okay, using a custom libchecktur.so built without -fexceptions..
> It works fine in the installer environment, for its purposes.

> This should be OK as there's no multipathd (which exercises the path checkers 
> more) running in the installer.
> I'll formalize/support this in another comment.

The only places that pthread_cancel() is called in libchecktur.so (tur.c + 
libsg.c) are 2 functions in tur.c:
1) libcheck_free()
2) libcheck_check()

And their calls to pthread_cancel() are /not/ exercised when /not/ in daemon 
mode
(i.e., running as multipath, not multipathd; as in the installer).

It's only in daemon mode that the checker goes into async mode -- via 
get_state() -> checker_set_async().
- And it's only in async mode that libcheck_check() might call pthread_cancel(),
- And it's only in async mode that libcheck_check() might set 'holders' to a 
value
for which libcheck_free() might call pthread_cancel() (holders > 1).

file libmultipath/discovery.c:

get_state (struct path * pp, int daemon)
{
...
condlog(3, "%s: get_state", pp->dev);

if (!checker_selected(c)) {
...
select_checker(pp);
if (!checker_selected(c)) {
condlog(3, "%s: No checker selected", pp->dev);
return PATH_UNCHECKED;
}
...
if (daemon)
checker_set_async(c);

file libmultipath/checkers.c:

void checker_set_async (struct checker * c)
{
if (!c)
return;
c->sync = 0;
}

file libmultipath/checkers/tur.c:

extern int
libcheck_check (struct checker * c)
{
...
if (c->sync)
return tur_check(c->fd, c->timeout, c->message);

/*
* Async mode
*/
...
if (ct->running) {
...
if (tur_check_async_timeout(c)) {
condlog(3, "%d:%d: tur checker timeout",
TUR_DEVT(ct));
pthread_cancel(ct->thread);
...
/* Start new TUR checker */
...
ct->holders++;

int libcheck_init (struct checker * c)
{
...
ct->holders = 1;
...

void libcheck_free (struct checker * c)
...
ct->holders--;
...
if (holders)
pthread_cancel(thread);
...

--- Comment From mauri...@br.ibm.com 2015-09-03 12:28 EDT---
Given the supporting evidence provided, I'll work on a patch to build 
multipath-udeb without -fexceptions.

(In reply to comment #22)
> Fortunately enough, the *only* ELF (binary/shared-library) in the
> multipath-udeb that requires libgcc_s is... libchecktur.so

(In reply to comment #23)
> Okay, using a custom libchecktur.so built without -fexceptions..
> It works fine in the installer environment, for its purposes.
>
> This should be OK as there's no multipathd (which exercises the path
> checkers more) running in the installer.

(In reply to comment #24)
> The only places that pthread_cancel() is called in libchecktur.so (tur.c +
> libsg.c) are 2 functions in tur.c:
...
> And their calls to pthread_cancel() are /not/ exercised when /not/ in daemon
> mode
> (i.e., running as multipath, not multipathd; as in the installer).

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-03 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-03 11:56 EDT---
Okay, using a custom libchecktur.so built without -fexceptions..
It works fine in the installer environment, for its purposes.

This should be OK as there's no multipathd (which exercises the path checkers 
more) running in the installer.
I'll formalize/support this in another comment.

~ # ls /lib/powerpc64le-linux-gnu/libgcc_s.so.1
ls: /lib/powerpc64le-linux-gnu/libgcc_s.so.1: No such file or directory

~ # grep libgcc_s /lib/multipath/libchecktur.so
~ #

~ # grep libgcc_s /lib/multipath/libchecktur.so.orig
libgcc_s.so.1
~ #

~ # multipath -v3
...
<...> | sda: get_state
<...> | loading /lib/multipath/libchecktur.so checker
<...> | sda: path checker = tur (config file default)
...
<...> | sdb: get_state
<...> | sdb: path checker = tur (config file default)
...
= paths list =
uuid   hcildev 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
<...> | tur checker refcount 2
<...> | const prioritizer refcount 2
<...> | tur checker refcount 1
<...> | const prioritizer refcount 1
<...> | unloading const prioritizer
<...> | unloading tur checker
<...> | unloading directio checker

~ # echo $?
0

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-03 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-03 11:26 EDT---
Fortunately enough, the *only* ELF (binary/shared-library) in the 
multipath-udeb that requires libgcc_s is... libchecktur.so
(C'mon.. otherwise we wouldn't be doing this :-)

$ dpkg-buildpackage
...
$ find debian/tmp-multipath-udeb/ \
| while read file; do \
file $file | grep -q ELF || continue
objdump -x $file | grep -q 'NEEDED.*libgcc_s' || continue
echo "$file needs libgcc_s"
done
debian/tmp-multipath-udeb/lib/multipath/libchecktur.so needs libgcc_s
$

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-03 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-03 11:11 EDT---
How to put libgcc_s.so.1 (from the udeb package) in the installer environment,
for testing/work-around purposes:

1) Go to https://launchpad.net/ubuntu/wily/ppc64el/libgcc1/
2) Click the latest (top-most) "Version" link (e.g., 1:5.2.1-15ubuntu5)
from the Release "Pocket" (unless you know you should use Proposed)
3) Copy the link address of the ".deb" file in the "Downloadable files" section
(e.g., http://.../libgcc1_5.2.1-15ubuntu5_ppc64el.deb)

4) On the installer, right after network configuration (username configuration 
stage),
select "Go Back", and "Execute a shell"
5) Run the following commands:
~ # wget 
http://launchpadlibrarian.net/215539827/libgcc1_5.2.1-15ubuntu5_ppc64el.deb
~ # ar x libgcc1_*.deb
~ # xzcat data.tar.xz | tar x ./lib/powerpc64le-linux-gnu/libgcc_s.so.1 -C /
~ # exit

~ # ls /lib/powerpc64le-linux-gnu/libgcc_s.so.1
/lib/powerpc64le-linux-gnu/libgcc_s.so.1

The result with the previous test binary as well (multipath in previous
comment):

~ # ./test
~ #

--- Comment From mauri...@br.ibm.com 2015-09-03 11:13 EDT---
Oops

> How to put libgcc_s.so.1 (from the udeb package) in the installer

s/udeb/libgcc1 deb/

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-03 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-03 11:05 EDT---
How to reproduce with QEMU/KVM (2 arguments as "-drive 
file=test.qcow2,serial=helloworld")

Force the path checker to tur:

~ # cat /etc/multipath.conf
defaults {
user_friendly_names yes
path_checker tur
}

blacklist_exceptions {
property ID_SERIAL
}

Notice the dlopen() error, and paths got no uuids, thus blacklisted:

~ # multipath -v3
...
<...> | sda: udev property ID_SERIAL whitelisted
...
<...> | sda: vendor = QEMU
<...> | sda: product = QEMU HARDDISK
<...> | sda: rev = 2.2.
<...> | sda: h:b:t:l = 0:0:1:0
...
<...> | sda: serial = helloworld
<...> | sda: 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
<...> | sda: path checker =  (config file default)
<...> | sda: checker timeout = 30 ms (internal default)
<...> | sda: No checker selected
<...> | sdb: udev property ID_SERIAL whitelisted
...
<...> | sdb: vendor = QEMU
<...> | sdb: product = QEMU HARDDISK
<...> | sdb: rev = 2.2.
<...> | sdb: h:b:t:l = 0:0:2:0
...
<...> | sdb: serial = helloworld
<...> | sdb: 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
<...> | sdb: path checker =  (config file default)
<...> | sdb: checker timeout = 30 ms (internal default)
<...> | sdb: No checker selected
<...> | loop0: blacklisted, udev property missing
...
= paths list =
uuid hcildev 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
<...> | sda: orphan path, wwid blacklisted
<...> | sdb: orphan path, wwid blacklisted
...
~ #

--- Comment From mauri...@br.ibm.com 2015-09-03 11:10 EDT---
And if you manually put libgcc_s.so.1 (from the libgcc1 deb package), it works 
fine.

~ # ls /lib/powerpc64le-linux-gnu/libgcc_s.so.1
/lib/powerpc64le-linux-gnu/libgcc_s.so.1

~ # multipath -v3
...
<...> | sda: udev property ID_SERIAL whitelisted
...
<...> | sda: serial = helloworld
<...> | sda: get_state
<...> | loading /lib/multipath/libchecktur.so checker
<...> | sda: path checker = tur (config file default)
<...> | sda: checker timeout = 30 ms (internal default)
<...> | sda: state = up
<...> | sda: uid_attribute = ID_SERIAL (internal default)
<...> | sda: uid = 0QEMU_QEMU_HARDDISK_helloworld (udev)
<...> | sda: detect_prio = 1 (config file default)
<...> | sda: prio = const (internal default)
<...> | sda: prio args =  (internal default)
<...> | sda: const prio = 1
<...> | sdb: udev property ID_SERIAL whitelisted
...
<...> | sdb: serial = helloworld
<...> | sdb: get_state
<...> | sdb: path checker = tur (config file default)
<...> | sdb: checker timeout = 30 ms (internal default)
<...> | sdb: state = up
<...> | sdb: uid_attribute = ID_SERIAL (internal default)
<...> | sdb: uid = 0QEMU_QEMU_HARDDISK_helloworld (udev)
<...> | sdb: detect_prio = 1 (config file default)
<...> | sdb: prio = const (internal default)
<...> | sdb: prio args =  (internal default)
<...> | sdb: const prio = 1
<...> | loop0: blacklisted, udev property missing
...
= paths list =
uuid   hcildev 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
<...> | tur checker refcount 2
<...> | const prioritizer refcount 2
<...> | tur checker refcount 1
<...> | const prioritizer refcount 1
<...> | unloading const prioritizer
<...> | unloading tur checker
<...> | unloading directio checker

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-03 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-03 10:18 EDT---
Some developer-backed reference for this as well:

(In reply to comment #15)
> libchecktur.so really requires a dynamic libgcc because it uses pthreads
> (namely pthread_cancel).

"""
> Wonder if someone can explain why pthread_cancel_init() dlopens
> libgcc_s.so.1?

Thread cancellation requires unwinding which is implemented by
compiler helper routines.
"""
-- https://sourceware.org/ml/libc-help/2009-10/msg00023.html

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs


[Bug 1489379] Comment bridged from LTC Bugzilla

2015-09-02 Thread bugproxy
--- Comment From mauri...@br.ibm.com 2015-09-02 22:11 EDT---
Today's work on this..

This is not so simple to "fix".

libchecktur.so really requires a dynamic libgcc because it uses pthreads 
(namely pthread_cancel).
it can go without a link-time dependency on libgcc *if* it's not built with 
-fexceptions.

it will run, but crash when pthread_cancel() is called.
I think this is already happening w/ other pieces of the code (libmultipath, 
iirc) - it's just luck it didn't crash yet.

Some testing/experiments.

$ cat test.c
#include 
#include 

void * loop(void *arg) {
}

int main() {
pthread_t thread;
pthread_create(&thread, NULL, &loop, NULL);
pthread_cancel(thread);  // this requires libgcc_s.so
return 0;
}

$ gcc -pthread -o test test.c

$ ./test; echo $?
0

$ ldd test
linux-vdso64.so.1 =>  (0x3fff8173)
libpthread.so.0 => /lib/powerpc64le-linux-gnu/libpthread.so.0 
(0x3fff816e)
libc.so.6 => /lib/powerpc64le-linux-gnu/libc.so.6 (0x3fff8150)
/lib64/ld64.so.2 (0x5013)

^ notice there's no dependency on libgcc_s at link-time, it's a run-time
dlopen() in pthread_cancel_init()

$ find /lib -name libgcc_s.so.1
/lib/powerpc64le-linux-gnu/libgcc_s.so.1

On installer:

~ # ./test
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted

~ # find /lib -name libgcc_s.so.1
~ #

To be continued.

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs