Public bug reported:

Binary package hint: multipath-tools

Environment:

njo...@fantail:~$ lsb_release -rd
Description:    Ubuntu 10.04 LTS
Release:        10.04
njo...@fantail:~$ apt-cache policy multipath-tools
multipath-tools:
  Installed: 0.4.8-14ubuntu4
  Candidate: 0.4.8-14ubuntu4
  Version table:
 *** 0.4.8-14ubuntu4 0
        500 http://nz.archive.ubuntu.com/ubuntu/ lucid/main Packages
        100 /var/lib/dpkg/status

Issue:

While reproducing
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/571093 both
myself and Dustin Kirkland encountered an apparent race condition in
multipath and dmsetup.

We were attempting variants of 'while true; do sudo multipath -F; sudo
multipath -v4 ; done' to create a set of udev add/remove events and
noticed that shortly after starting, no output appeared within the
'udevadm monitor' command.

We observed that the output from a: multipath -v4 was similar to:

r...@fantail:~# multipath -v4
Discover device /sys/block/ram0
ram0: device node name blacklisted
Discover device /sys/block/ram1
ram1: device node name blacklisted
Discover device /sys/block/ram2
ram2: device node name blacklisted
Discover device /sys/block/ram3
ram3: device node name blacklisted
Discover device /sys/block/ram4
ram4: device node name blacklisted
Discover device /sys/block/ram5
ram5: device node name blacklisted
Discover device /sys/block/ram6
ram6: device node name blacklisted
Discover device /sys/block/ram7
ram7: device node name blacklisted
Discover device /sys/block/ram8
ram8: device node name blacklisted
Discover device /sys/block/ram9
ram9: device node name blacklisted
Discover device /sys/block/ram10
ram10: device node name blacklisted
Discover device /sys/block/ram11
ram11: device node name blacklisted
Discover device /sys/block/ram12
ram12: device node name blacklisted
Discover device /sys/block/ram13
ram13: device node name blacklisted
Discover device /sys/block/ram14
ram14: device node name blacklisted
Discover device /sys/block/ram15
ram15: device node name blacklisted
Discover device /sys/block/loop0
loop0: device node name blacklisted
Discover device /sys/block/loop1
loop1: device node name blacklisted
Discover device /sys/block/loop2
loop2: device node name blacklisted
Discover device /sys/block/loop3
loop3: device node name blacklisted
Discover device /sys/block/loop4
loop4: device node name blacklisted
Discover device /sys/block/loop5
loop5: device node name blacklisted
Discover device /sys/block/loop6
loop6: device node name blacklisted
Discover device /sys/block/loop7
loop7: device node name blacklisted
Discover device /sys/block/sda
sda: not found in pathvec
sda: mask = 0x1f
sda: dev_t = 8:0
sda: size = 625142448
sda: subsystem = scsi
sda: vendor = ATA
sda: product = WDC WD3200AAKS-0
sda: rev = 12.0
sda: h:b:t:l = 0:0:0:0
sda: serial = WD-WCAS70000070
sda: getprio = NULL (internal default)
sda: prio = 1
sda: getuid = /lib/udev/scsi_id -g -u -d /dev/%n (config file default)
sda: uid = 1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070 (callout)
Discover device /sys/block/sr0
sr0: device node name blacklisted
Discover device /sys/block/sdb
sdb: not found in pathvec
sdb: mask = 0x1f
sdb: dev_t = 8:16
sdb: size = 15679488
sdb: subsystem = scsi
sdb: vendor = Kingston
sdb: product = DataTraveler G2
sdb: rev = PMAP
sdb: h:b:t:l = 6:0:0:0
sdb: serial =
sdb: getprio = NULL (internal default)
sdb: prio = 1
sdb: getuid = /lib/udev/scsi_id -g -u -d /dev/%n (config file default)
error calling out /lib/udev/scsi_id -g -u -d /dev/sdb
Discover device /sys/block/sdc
sdc: not found in pathvec
sdc: mask = 0x1f
sdc: dev_t = 8:32
sdc: size = 41943040
sdc: subsystem = scsi
sdc: vendor = IET
sdc: product = VIRTUAL-DISK
sdc: rev = 0
sdc: h:b:t:l = 7:0:0:0
sdc: serial =
sdc: getprio = NULL (internal default)
sdc: prio = 1
sdc: getuid = /lib/udev/scsi_id -g -u -d /dev/%n (config file default)
error calling out /lib/udev/scsi_id -g -u -d /dev/sdc
Discover device /sys/block/dm-0
dm-0: device node name blacklisted
Discovery status 0
===== paths list =====
uuid                                       hcil    dev dev_t pri dm_st  chk_st
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070 0:0:0:0 sda 8:0   1   [undef][undef
                                           6:0:0:0 sdb 8:16  1   [undef][undef
                                           7:0:0:0 sdc 8:32  1   [undef][undef
sda: ownership set to 1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070
sda: not found in pathvec
sda: mask = 0xc
sda: path checker = directio (config file default)
directio: called for 800
directio: called in synchronous mode
directio: starting new request
directio: async io getevents returns 1 (errno=No such file or directory)
directio: io finished 4096/0
sda: state = 2
sda: prio = 1
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: pgfailover = -1 (internal default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: pgpolicy = failover (internal 
default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: selector = round-robin 0 (internal 
default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: features = 0 (internal default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: hwhandler = 0 (internal default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: rr_weight = 1 (internal default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: minio = 1000 (config file default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: no_path_retry = NONE (internal 
default)
pg_timeout = NONE (internal default)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: set ACT_CREATE (map does not exist)
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: map already present
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: domap (0) failure for create/reload 
map
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: remove multipath map
sda: orphaned

And a device was left behind in /dev/mapper:

njo...@fantail:~$ ll /dev/mapper/
total 0
drwxr-xr-x  2 root root      80 2010-05-25 04:25 ./
drwxr-xr-x 18 root root    4080 2010-05-25 04:25 ../
brw-rw----  1 root disk 252,  0 2010-05-25 04:25 
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070
crw-rw----  1 root root  10, 59 2010-05-22 10:35 control

$ sudo dmsetup ls
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070      (252, 0)

We had to perform 'dmsetup remove <id>' to clear the 'map already
present' message.

While I admit that this is a very specific case, it is still a race
condition and does warrant a bug report.

** Affects: multipath-tools (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  Binary package hint: multipath-tools
  
  Environment:
  
  njo...@fantail:~$ lsb_release -rd
  Description:  Ubuntu 10.04 LTS
  Release:      10.04
  njo...@fantail:~$ apt-cache policy multipath-tools
  multipath-tools:
-   Installed: 0.4.8-14ubuntu4
-   Candidate: 0.4.8-14ubuntu4
-   Version table:
-  *** 0.4.8-14ubuntu4 0
-         500 http://nz.archive.ubuntu.com/ubuntu/ lucid/main Packages
-         100 /var/lib/dpkg/status
+   Installed: 0.4.8-14ubuntu4
+   Candidate: 0.4.8-14ubuntu4
+   Version table:
+  *** 0.4.8-14ubuntu4 0
+         500 http://nz.archive.ubuntu.com/ubuntu/ lucid/main Packages
+         100 /var/lib/dpkg/status
  
  Issue:
  
  While reproducing
  https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/571093 both
  myself and Dustin Kirkland encountered an apparent race condition in
  multipath and dmsetup.
  
  We were attempting variants of 'while true; do sudo multipath -F; sudo
  multipath -v4 ; done' to create a set of udev add/remove events and
  noticed that shortly after starting, no output appeared within the
  'udevadm monitor' command.
  
  We observed that the output from a: multipath -v4 was similar to:
  
  r...@fantail:~# multipath -v4
  Discover device /sys/block/ram0
  ram0: device node name blacklisted
  Discover device /sys/block/ram1
  ram1: device node name blacklisted
  Discover device /sys/block/ram2
  ram2: device node name blacklisted
  Discover device /sys/block/ram3
  ram3: device node name blacklisted
  Discover device /sys/block/ram4
  ram4: device node name blacklisted
  Discover device /sys/block/ram5
  ram5: device node name blacklisted
  Discover device /sys/block/ram6
  ram6: device node name blacklisted
  Discover device /sys/block/ram7
  ram7: device node name blacklisted
  Discover device /sys/block/ram8
  ram8: device node name blacklisted
  Discover device /sys/block/ram9
  ram9: device node name blacklisted
  Discover device /sys/block/ram10
  ram10: device node name blacklisted
  Discover device /sys/block/ram11
  ram11: device node name blacklisted
  Discover device /sys/block/ram12
  ram12: device node name blacklisted
  Discover device /sys/block/ram13
  ram13: device node name blacklisted
  Discover device /sys/block/ram14
  ram14: device node name blacklisted
  Discover device /sys/block/ram15
  ram15: device node name blacklisted
  Discover device /sys/block/loop0
  loop0: device node name blacklisted
  Discover device /sys/block/loop1
  loop1: device node name blacklisted
  Discover device /sys/block/loop2
  loop2: device node name blacklisted
  Discover device /sys/block/loop3
  loop3: device node name blacklisted
  Discover device /sys/block/loop4
  loop4: device node name blacklisted
  Discover device /sys/block/loop5
  loop5: device node name blacklisted
  Discover device /sys/block/loop6
  loop6: device node name blacklisted
  Discover device /sys/block/loop7
  loop7: device node name blacklisted
  Discover device /sys/block/sda
  sda: not found in pathvec
  sda: mask = 0x1f
  sda: dev_t = 8:0
  sda: size = 625142448
  sda: subsystem = scsi
- sda: vendor = ATA     
+ sda: vendor = ATA
  sda: product = WDC WD3200AAKS-0
  sda: rev = 12.0
  sda: h:b:t:l = 0:0:0:0
- sda: serial = WD-WCAS70000070     
+ sda: serial = WD-WCAS70000070
  sda: getprio = NULL (internal default)
  sda: prio = 1
  sda: getuid = /lib/udev/scsi_id -g -u -d /dev/%n (config file default)
  sda: uid = 1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070 (callout)
  Discover device /sys/block/sr0
  sr0: device node name blacklisted
  Discover device /sys/block/sdb
  sdb: not found in pathvec
  sdb: mask = 0x1f
  sdb: dev_t = 8:16
  sdb: size = 15679488
  sdb: subsystem = scsi
  sdb: vendor = Kingston
- sdb: product = DataTraveler G2 
+ sdb: product = DataTraveler G2
  sdb: rev = PMAP
  sdb: h:b:t:l = 6:0:0:0
- sdb: serial = 
+ sdb: serial =
  sdb: getprio = NULL (internal default)
  sdb: prio = 1
  sdb: getuid = /lib/udev/scsi_id -g -u -d /dev/%n (config file default)
  error calling out /lib/udev/scsi_id -g -u -d /dev/sdb
  Discover device /sys/block/sdc
  sdc: not found in pathvec
  sdc: mask = 0x1f
  sdc: dev_t = 8:32
  sdc: size = 41943040
  sdc: subsystem = scsi
- sdc: vendor = IET     
- sdc: product = VIRTUAL-DISK    
- sdc: rev = 0   
+ sdc: vendor = IET
+ sdc: product = VIRTUAL-DISK
+ sdc: rev = 0
  sdc: h:b:t:l = 7:0:0:0
- sdc: serial = 
+ sdc: serial =
  sdc: getprio = NULL (internal default)
  sdc: prio = 1
  sdc: getuid = /lib/udev/scsi_id -g -u -d /dev/%n (config file default)
  error calling out /lib/udev/scsi_id -g -u -d /dev/sdc
  Discover device /sys/block/dm-0
  dm-0: device node name blacklisted
  Discovery status 0
  ===== paths list =====
  uuid                                       hcil    dev dev_t pri dm_st  chk_st
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070 0:0:0:0 sda 8:0   1   [undef][undef
-                                            6:0:0:0 sdb 8:16  1   [undef][undef
-                                            7:0:0:0 sdc 8:32  1   [undef][undef
+                                            6:0:0:0 sdb 8:16  1   [undef][undef
+                                            7:0:0:0 sdc 8:32  1   [undef][undef
  sda: ownership set to 1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070
  sda: not found in pathvec
  sda: mask = 0xc
  sda: path checker = directio (config file default)
  directio: called for 800
  directio: called in synchronous mode
  directio: starting new request
  directio: async io getevents returns 1 (errno=No such file or directory)
  directio: io finished 4096/0
  sda: state = 2
  sda: prio = 1
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: pgfailover = -1 (internal default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: pgpolicy = failover (internal 
default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: selector = round-robin 0 
(internal default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: features = 0 (internal default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: hwhandler = 0 (internal default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: rr_weight = 1 (internal default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: minio = 1000 (config file default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: no_path_retry = NONE (internal 
default)
  pg_timeout = NONE (internal default)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: set ACT_CREATE (map does not 
exist)
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: map already present
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: domap (0) failure for 
create/reload map
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070: remove multipath map
  sda: orphaned
  
  And a device was left behind in /dev/mapper:
  
  njo...@fantail:~$ ll /dev/mapper/
  total 0
  drwxr-xr-x  2 root root      80 2010-05-25 04:25 ./
  drwxr-xr-x 18 root root    4080 2010-05-25 04:25 ../
  brw-rw----  1 root disk 252,  0 2010-05-25 04:25 
1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070
  crw-rw----  1 root root  10, 59 2010-05-22 10:35 control
  
  $ sudo dmsetup ls
  1ATA_WDC_WD3200AAKS-00TMA0_WD-WCAS70000070    (252, 0)
  
  We had to perform 'dmsetup remove <id>' to clear the 'map already
  present' message.
  
- 
- While I admit that this is very a very specific case, it is still a race 
condition and does warrant a bug report.
+ While I admit that this is a very specific case, it is still a race
+ condition and does warrant a bug report.

-- 
Race condition with dmsetup causes 'map already present' messages
https://bugs.launchpad.net/bugs/585027
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to multipath-tools in ubuntu.

-- 
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

Reply via email to