[Bug 585027] Re: Race condition with dmsetup causes 'map already present' messages

Peter Petrakis peter.petrakis at canonical.com
Wed Jul 18 15:27:27 UTC 2012


Retested on precise base and downgraded to multipath-tools 0.4.8-14ubuntu4
on generic 3.2.0.27.29. Ran unit test for several hours, no fault found.

Intend to downgrade to lucid kernel and retest, hopefully it pops then, save
me the trouble of installing lucid somewhere.

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

Title:
  Race condition with dmsetup causes 'map already present' messages

Status in “multipath-tools” package in Ubuntu:
  Invalid

Bug description:
  Binary package hint: multipath-tools

  Environment:

  njones at fantail:~$ lsb_release -rd
  Description:	Ubuntu 10.04 LTS
  Release:	10.04
  njones at 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:

  root at 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:

  njones at 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.

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




More information about the foundations-bugs mailing list