[PATCH v3] nvme-multipath: expose path_state via sysfs

Nilay Shroff nilay at linux.ibm.com
Wed Jun 24 06:21:00 PDT 2026


On 6/24/26 5:22 PM, Guixin Liu wrote:
> 
> 
> 在 2026/6/24 17:55, Daniel Wagner 写道:
>> On Wed, Jun 24, 2026 at 08:36:44AM +0100, John Garry wrote:
>>> On 24/06/2026 06:48, Guixin Liu wrote:
>>>> Add a read-only "path_state" sysfs attribute to each NVMe path namespace
>>>> device (/sys/class/nvme/nvmeX/nvmeXcYnZ/path_state) that exposes the
>>>> current path state, including whether the path is enabled or disabled
>>>> with a specific reason.
>>>>
>>>> Factor the path disable checks from nvme_path_is_disabled() into a new
>>>> nvme_path_get_state() helper that returns an enum nvme_path_state. This
>>>> keeps the path selection logic and sysfs reporting in sync, so any future
>>>> updates to the path disable criteria are automatically reflected in the
>>>> sysfs output.
>>>>
>>>> Possible values:
>>>>     - "enabled (optimized)"     : ANA state is optimized
>>>>     - "enabled (non-optimized)" : ANA state is not optimized
>>>>     - "disabled (ctrl_down)"    : controller is not live
>>>>     - "disabled (ana_pending)"  : ANA state change pending
>>>>     - "disabled (ns_not_ready)" : namespace is not ready
>> I'd prefer to have a single string here instead of something we might need
>> to parse again. The sysfs docs says
>>
>>    Mixing types, expressing multiple lines of data, and doing fancy
>>    formatting of data is heavily frowned upon. Doing these things may get
>>    you publicly humiliated and your code rewritten without notice.
>>
>> Something like
>>
>>    - optimized
>>    - non-optimized
>>    - ctrl-down
>>    - ana-pending
>>    - ns-no-ready
> Would this be redundant with ana_state?
> 
> Is this OK?
>      - enabled
>      - ctrl-down
>      - ana-pending
>      - ns-not-ready
> 
> 
> CC Keith, John, Nilay, what do you think?

I tend to agree with Daniel about both mixing types and
reporting ana state values here as ana state is also reported
separately.

The purpose of path_state is really to expose whether the path
is currently eligible for path selection and, if not, why.

IMO, a simpler set of values which you suggested above
should be sufficient. But lets wait if Keith has any
other suggestion.

Thanks
--Nilay





More information about the Linux-nvme mailing list