Description of problem: A customer reports that installing a RHEL 6.10 on PURE FlashArray fails due to missing dm-queue-length.ko driver in the initrd. We delivered him the driver as part of a Device Driver image and he could confirm he can now install the system. His multipath configuration is shown below: device { vendor "PURE" product "FlashArray" path_grouping_policy multibus getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" path_selector "queue-length 0" ... } Still there is something weird: customer claims that RHEL6.8 DVD just works, even though dm-queue-length is also not shipped. My assumption is that some fallback mechanism happens with kernel 2.6.32-642.el6.x86_64 (RHEL6.8 DVD) but not with kernel 2.6.32-754.el6.x86_64 (RHEL6.10 DVD). Version-Release number of selected component (if applicable): RHEL6.10 DVD How reproducible: Always on customer site
The patch to add the PURE FlashArray, which contained the explicit use of 'queue-length', was introduced via the following commit and patch: commit 9c8b406ac33c5d5a0521c81f4e2416456c9f971e Author: Benjamin Marzinski <bmarzins> Date: Thu Nov 3 20:30:44 2016 -0500 device-mapper-multipath-0.4.9.96 Add 0258-UPBZ-1300414-PURE_config.patch [...] The patch looks like this: --- libmultipath/hwtable.c | 18 ++++++++++++++++++ multipath.conf.defaults | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) Index: multipath-tools/libmultipath/hwtable.c =================================================================== --- multipath-tools.orig/libmultipath/hwtable.c +++ multipath-tools/libmultipath/hwtable.c @@ -1351,6 +1351,24 @@ static struct hwentry default_hw[] = { .checker_name = TUR, .prio_name = DEFAULT_PRIO, }, + { + .vendor = "PURE", + .product = "FlashArray", + .getuid = DEFAULT_GETUID, + .features = DEFAULT_FEATURES, + .hwhandler = DEFAULT_HWHANDLER, + .selector = "queue-length 0", + .pgpolicy = MULTIBUS, + .pgfailback = -FAILBACK_IMMEDIATE, + .checker_name = TUR, + .fast_io_fail = 10, + .user_friendly_names = USER_FRIENDLY_NAMES_OFF, + .prio_name = DEFAULT_PRIO, + .dev_loss = 60, + .rr_weight = RR_WEIGHT_NONE, + .minio = DEFAULT_MINIO, + .minio_rq = DEFAULT_MINIO_RQ, + }, /* * EOL */ Index: multipath-tools/multipath.conf.defaults =================================================================== --- multipath-tools.orig/multipath.conf.defaults +++ multipath-tools/multipath.conf.defaults @@ -1190,4 +1190,22 @@ # rr_min_io 1000 # rr_min_io_rq 1 # } +# device { +# vendor "PURE" +# product "FlashArray" +# path_grouping_policy multibus +# getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" +# path_selector "queue-length 0" +# path_checker tur +# features "0" +# hardware_handler "0" +# prio const +# failback immediate +# rr_weight uniform +# rr_min_io 1000 +# rr_min_io_rq 1 +# fast_io_fail_tmo 10 +# dev_loss_tmo 60 +# user_friendly_names no +# } #} Before introducing this entry, this device was using the defaults, which involves 'round-robin'. Now, in RHEL 6.8 we had the following version of multipath: device-mapper-multipath-0.4.9.93 In RHEL 6.9, we had: device-mapper-multipath-0.4.9.100.1 So the patch was introduced in an upgrade after RHEL 6.8 and before RHEL 6.9. If the ISO was created before the patch was introduced, which is probably what happened here, then that's the reason why 6.8 installation worked, but 6.10 (and possibly 6.9) don't.