SUSE Support

Here When You Need Us

features= "queue_if_no_path" despite features "0" set, reported by multipath -ll.

This document (000021020) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Server 15 all SP High Availability Cluster
SUSE Linux Enterprise Server 12 SP5 High Availability Cluster

 

Situation

scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1 as kernel boot parameters.

Despite setting features "0" in the defaults section of multipath.conf, multipath -ll reports "queue_if_no_path" option.

/etc/multipath.conf snippet.
....
defaults {
    verbosity 2
    polling_interval 5
    max_polling_interval 20
    reassign_maps "no"
    multipath_dir "/lib64/multipath"
    path_selector "service-time 0"
    path_grouping_policy "failover"
    uid_attribute "ID_SERIAL"
    prio "const"
    prio_args ""
    features "0"
....

# /sbin/multipath -ll
360000a800003a8700840643040484352 dm-269 EMC,SYMMETRIX
size=20G features='3 queue_if_no_path queue_mode mq' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  |- 15:0:6:46  sdzh  130:688  active ready running
  |- 15:0:5:46  sdud  66:592   active ready running
  |- 16:0:2:46  sdqy  133:288  active ready running
  `- 16:0:4:46  sdzu  131:640  active ready running

Resolution

Queuing policy on clustered servers should be set to "no_path_retry" with a value that the cluster node receives an I/O error in relation to the cluster verification process (recommended to be 50% of the heartbeat tolerance) if the connection is lost to the storage system.
https://documentation.suse.com/sles/12-SP5/html/SLES-all/cha-multipath.html#sec-multipath-policies-cluster
 
For instance this directive in multipath.conf, will reestablish the default for all MPIO devices:
overrides {
    no_path_retry fail
}

# /sbin/multipath -ll
360000a800003a8700840643040484352 dm-269 EMC,SYMMETRIX
size=20G features='2 queue_mode mq' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  |- 15:0:6:46  sdzh  130:688  active ready running
  |- 15:0:5:46  sdud  66:592   active ready running
  |- 16:0:2:46  sdqy  133:288  active ready running
  `- 16:0:4:46  sdzu  131:640  active ready running
Command multipath -T shows the database settings for connected devices. For example:
multipath -T  output snippet:
 
....
devices {
     device {
                vendor "IBM"
                product "^1750500"
                path_grouping_policy "group_by_prio"
                prio "alua"
                failback "immediate"
                no_path_retry "queue"
        }
}
The above directive configured in multipath.conf also supersedes any defaults setting.

Refer to man multipath.conf for additional information.

Cause

features "0" is in the defaults section of multipath.conf, but this default is being superseded by the configuration.

For example, when booting with scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1, which enables multiqueue for the device mapper, which is changing the queue_mode from the default.

The multipath.conf man page states for queue_mode:
   queue_mode <mode>
        (Since kernel 4.8) Select the the queueing
        mode  per multipath device.  <mode> can be
        bio, rq or mq, which corresponds  to  bio-
        based, request-based, and block-multiqueue
        (blk-mq) request-based, respectively.  The
        default  depends  on  the kernel parameter
        dm_mod.use_blk_mq. It is mq if the  latter
        is set, and rq otherwise.
For queue_if_no_path:
    queue_if_no_path
        (Deprecated,  superseded by no_path_retry)
        Queue I/O if no path is active.  Identical
        to  the no_path_retry with queue value. If
        both this feature  and  no_path_retry  are
        set,  the  latter  value takes precedence.
        See KNOWN ISSUES.

Status

Reported to Engineering

Additional Information

Any change in the cluster configuration need to be thoroughly tested. For instance you could emulate a path fail by issuing:
echo 1 > /sys/block/sdzh/device/delete
echo 1 > /sys/block/sdud/device/delete
....
rescan-scsi-bus.sh will re-establish the path.

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:000021020
  • Creation Date: 20-Mar-2023
  • Modified Date:20-Jul-2023
    • SUSE Linux Enterprise High Availability Extension
    • SUSE Linux Enterprise Server

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

tick icon

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

tick icon

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.

tick icon

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.