Hello,

I have the same problem.

Setting udev in debug mode (/etc/udev/udev.conf) you'll notice any problem.

At the first I discovered that I  missed install dmsetup. But later I saw that
kpartx said that the multipath device was not there.

I think that the problem is that multipath is too slow creating the devices and
udev is too fast launching kpartx.

Probably there's a way to say udev to wait until the device is created, but I'm
not a udev guru and actually I don't care, so I solved it with this hack: an
small script called /sbin/my-kpartx:

---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----
#!/bin/sh

wait_devices() {
        while [ $# -gt 0 ]; do
                if ! expr $1 : "-[a-z]" > /dev/null; then
                        COUNT=0
                        while [ $COUNT -lt 10 ] && [ ! -b $1 ]; do
                                echo "Waiting for $1."
                                sleep 1
                                COUNT=$(($COUNT+1))
                        done
                        return
                fi
                shift
        done
}

wait_devices $@
/sbin/kpartx $@
---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----

And I modified the multipath-tools udev rules
(/etc/udev/rules.d/multipath.rules). You have to restart udev:

---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----
# take care of devmap partitioning
ACTION=="add", SUBSYSTEM=="block", KERNEL=="dm-*", \
        PROGRAM="/sbin/dmsetup -j %M -m %m --noopencount --noheadings -c -o name
info", \
        RUN+="/sbin/my-kpartx -a /dev/mapper/%c"
---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----


That works :)

Note: I backported multipath-tools to sarge. There dmsetup doesn't allow the -o
option, so I have to write this script /sbin/get_multipath_name:

---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----
#!/bin/sh
/sbin/dmsetup -j $1 -m $2 --noopencount --noheadings -c info | cut -f 1 -d :
---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----

and use this rules:

---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----
ACTION=="add", SUBSYSTEM=="block", KERNEL=="dm-*", \
        PROGRAM="/sbin/get_multipath_name %M %m", \
        RUN+="/sbin/my-kpartx -a /dev/mapper/%c"
---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----

I think that the solution is tune the udev rules file, or extend kpartx to wait
for the device or to use the major:minor number directly.

-- 
Atentamente,
Héctor Rivas
begin:vcard
fn;quoted-printable:H=C3=A9ctor Rivas G=C3=A1ndara
n;quoted-printable;quoted-printable:Rivas G=C3=A1ndara;H=C3=A9ctor
org:LambdaStream Servicios Interactivos S.L.;Sistemas
adr;quoted-printable;quoted-printable;quoted-printable;quoted-printable:Campus de Elvi=C3=B1a;;Edificio de Servicios de Investigaci=C3=B3n;A Coru=C3=B1a;A Coru=C3=B1a;15071;Spain
email;internet:[EMAIL PROTECTED]
title;quoted-printable:H=C3=A9ctor Rivas G=C3=A1ndara
tel;work:981173344
x-mozilla-html:FALSE
url:http://www.lambdastream.com
version:2.1
end:vcard

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to