Bug 150029
Summary: | Pool does not see all powerpath devices | ||||||
---|---|---|---|---|---|---|---|
Product: | [Retired] Red Hat Cluster Suite | Reporter: | David Bertin <dbertin> | ||||
Component: | gfs | Assignee: | AJ Lewis <157070.alewis> | ||||
Status: | CLOSED ERRATA | QA Contact: | GFS Bugs <gfs-bugs> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | 3 | ||||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2005-04-25 16:25:53 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
This is because the powerpath driver does not set things up so that *all* its entries are in gendisk (as seen in the /proc/partitions listings). Workaround is to scan the /dev directory for emcpower nodes instead of relying on /proc/partitions to be accurate. Created attachment 111549 [details]
Proposed fix
Proposed patch to make the pool tools read the /dev/ directory structure for
emcpower devices when detected in /proc/partitions.
Proposed fix is now in the 6.0 CVS tree and should be built in the next update. Additionally, the pool kernel module has been updated so that it will use the powerpath device _only_ allowing for powerpath to take care of multipathing instead of doing it twice - once through PP and once through pool. An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2005-466.html |
Description of problem: From customer: --------------- I've created a new striped pool, datapoolE, that consists of 16 PowerPath devices. poolname datapoolE subpools 01 subpool 00 128 16 gfs_data pooldevice 00 00 /dev/emcpowerc1 pooldevice 00 01 /dev/emcpowerd1 pooldevice 00 02 /dev/emcpowere1 pooldevice 00 03 /dev/emcpowerf1 pooldevice 00 04 /dev/emcpowerg1 pooldevice 00 05 /dev/emcpowerh1 pooldevice 00 06 /dev/emcpoweri1 pooldevice 00 07 /dev/emcpowerj1 pooldevice 00 08 /dev/emcpowerk1 pooldevice 00 09 /dev/emcpowerl1 pooldevice 00 10 /dev/emcpowerm1 pooldevice 00 11 /dev/emcpowern1 pooldevice 00 12 /dev/emcpowero1 pooldevice 00 13 /dev/emcpowerp1 pooldevice 00 14 /dev/emcpowerq1 pooldevice 00 15 /dev/emcpowerr1 The output of pool_info datapoolE -D is shown below and it clearly indicates there is a problem with the paths to the 14th and 15th devices. e.g. Device 13 Path count : 3 Good path count : 3 Path 0 : /dev/sdae1 (GOOD) Path 1 : /dev/sdaf1 (GOOD) Path 2 : /dev/emcpowerp1 (GOOD) Blocks : 3968 Device 14 Path count : 3 Good path count : 3 Path 0 : /dev/sdag1 (GOOD) Path 1 : /dev/sdah1 (GOOD) Path 2 : /dev/emcpowera1 (GOOD) - > This should be /dev/emcpowerq1 Blocks : 3968 Device 15 Path count : 3 Good path count : 3 Path 0 : /dev/sdai1 (GOOD) Path 1 : /dev/sdaj1 (GOOD) Path 2 : /dev/emcpowerb1 (GOOD) - > This should be /dev/emcpowerr1 Blocks : 3968 If I run a powermt display dev=emcpowerp then the underlying sd devices are consistent with what the pool subsystem sees. [root@sasl003a root]# powermt display dev=emcpowerp Pseudo name=emcpowerp Symmetrix ID=000185704662 Logical device ID=0699 state=alive; policy=SymmOpt; priority=0; queued-IOs=0 ============================================================================== ---------------- Host --------------- - Stor - -- I/O Path - -- Stats --- ### HW Path I/O Paths Interf. Mode State Q-IOs Errors ============================================================================== 0 QLogic Fibre Channel 2300 sdae FA 13aA active alive 0 0 1 QLogic Fibre Channel 2300 sdaf FA 4aA active alive 0 0 However this is not true the next two devices. The sd devices are correct but the actual PowerPath device is wrong. Output of 'pooltool -s' ------------------------ Unable to read device "/dev/emcpowera1": Bad file descriptor Unable to read device "/dev/emcpowerj2": Bad file descriptor Device Pool Label ====== ========== /dev/pool/beta_ccs <- CCA device -> /dev/pool/datapoolE <- unknown -> /dev/emcpowera <- unknown -> /dev/emcpowera1 <- unknown -> /dev/emcpowerb <- partition information -> /dev/emcpowerb1 beta_ccs /dev/emcpoweri <- partition information -> /dev/emcpowerj <- partition information -> /dev/emcpowerj1 datapoolE /dev/emcpowerj2 <- unknown -> /dev/emcpowerk <- partition information -> /dev/emcpowerk1 datapoolE /dev/emcpowerl <- partition information -> /dev/emcpowerm <- partition information -> /dev/emcpowern <- partition information -> /dev/emcpowera <- unknown -> /dev/emcpowerb <- partition information -> /dev/emcpowerb1 beta_ccs /dev/emcpowerc <- partition information -> /dev/emcpowerc1 datapoolE /dev/emcpowerd <- partition information -> /dev/emcpowerd1 datapoolE /dev/emcpowere <- partition information -> /dev/emcpowere1 datapoolE /dev/emcpowerf <- partition information -> /dev/emcpowerf1 datapoolE /dev/emcpowerg <- partition information -> /dev/emcpowerg1 datapoolE /dev/emcpowerh <- partition information -> /dev/emcpowerh1 datapoolE /dev/emcpoweri <- partition information -> /dev/emcpoweri1 datapoolE /dev/emcpowerj <- partition information -> /dev/emcpowerj1 datapoolE /dev/emcpowerk <- partition information -> /dev/emcpowerk1 datapoolE /dev/emcpowerl <- partition information -> /dev/emcpowerl1 datapoolE /dev/emcpowerm <- partition information -> /dev/emcpowerm1 datapoolE /dev/emcpowern <- partition information -> /dev/emcpowern1 datapoolE /dev/emcpowero <- partition information -> /dev/emcpowero1 datapoolE /dev/emcpowerp <- partition information -> /dev/emcpowerp1 datapoolE /dev/sdag <- partition information -> /dev/sdag1 datapoolE /dev/sdah <- partition information -> /dev/sdah1 datapoolE /dev/sdai <- partition information -> /dev/sdai1 datapoolE /dev/sdaj <- partition information -> /dev/sdaj1 datapoolE /dev/sdq <- partition information -> /dev/sdq1 datapoolE /dev/sdr <- partition information -> /dev/sdr1 datapoolE /dev/sds <- partition information -> /dev/sds1 datapoolE /dev/sdt <- partition information -> /dev/sdt1 datapoolE /dev/sdu <- partition information -> /dev/sdu1 datapoolE /dev/sdv <- partition information -> /dev/sdv1 datapoolE /dev/sdw <- partition information -> /dev/sdw1 datapoolE /dev/sdx <- partition information -> /dev/sdx1 datapoolE /dev/sdy <- partition information -> /dev/sdy1 datapoolE /dev/sdz <- partition information -> /dev/sdz1 datapoolE /dev/sdaa <- partition information -> /dev/sdaa1 datapoolE /dev/sdab <- partition information -> /dev/sdab1 datapoolE /dev/sdac <- partition information -> /dev/sdac1 datapoolE /dev/sdad <- partition information -> /dev/sdad1 datapoolE /dev/sdae <- partition information -> /dev/sdae1 datapoolE /dev/sdaf <- partition information -> /dev/sdaf1 datapoolE /dev/sda <- unknown -> /dev/sdb <- partition information -> /dev/sdb1 beta_ccs /dev/sdc <- unknown -> /dev/sdd <- partition information -> /dev/sdd1 beta_ccs /dev/sde <- partition information -> /dev/sde1 datapoolE /dev/sdf <- partition information -> /dev/sdf1 datapoolE /dev/sdg <- partition information -> /dev/sdg1 datapoolE /dev/sdh <- partition information -> /dev/sdh1 datapoolE /dev/sdi <- partition information -> /dev/sdi1 datapoolE /dev/sdj <- partition information -> /dev/sdj1 datapoolE /dev/sdk <- partition information -> /dev/sdk1 datapoolE /dev/sdl <- partition information -> /dev/sdl1 datapoolE /dev/sdm <- partition information -> /dev/sdm1 datapoolE /dev/sdn <- partition information -> /dev/sdn1 datapoolE /dev/sdo <- partition information -> /dev/sdo1 datapoolE /dev/sdp <- partition information -> /dev/sdp1 datapoolE /dev/cciss/c0d0 <- partition information -> /dev/cciss/c0d0p1 <- EXT2/3 filesystem -> /dev/cciss/c0d0p2 <- EXT2/3 filesystem -> /dev/cciss/c0d0p3 <- EXT2/3 filesystem -> /dev/cciss/c0d0p4 <- partition information -> /dev/cciss/c0d0p5 <- EXT2/3 filesystem -> /dev/cciss/c0d0p6 <- EXT2/3 filesystem -> /dev/cciss/c0d0p7 <- EXT2/3 filesystem -> /dev/cciss/c0d1 <- partition information -> /dev/cciss/c0d1p1 <- swap device -> /dev/cciss/c0d1p2 <- EXT2/3 filesystem -> How reproducible: Every time. Steps to Reproduce: 1. Create a new striped pool from 16 powerpath devices 2. pool_info <poolname> -D 3. Notice that the paths to the 14th and 15th devices point to the first two powerpath devices in the pool, not the final two powerpath devices in the pool.