Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP4
powerpc-utils.20340
ofpathname-Use-NVMe-controller-physical-nsid.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ofpathname-Use-NVMe-controller-physical-nsid.patch of Package powerpc-utils.20340
From 628ed06de76d40ce8ee74b055a3004e3cfc2aa0b Mon Sep 17 00:00:00 2001 From: Tyrel Datwyler <tyreld@linux.ibm.com> Date: Mon, 5 Oct 2020 13:03:45 -0700 Subject: [PATCH] ofpathname: Use NVMe controller physical nsid References: bsc#1182020 ltc#191360 Upstream: accpeted, expected v1.3.9 Git-commit: 628ed06de76d40ce8ee74b055a3004e3cfc2aa0b Linux creates logical block devices of the the form nvmeXnYpZ such that X = the controller, Y = namepsace, and Z = partition. For example: /dev/nvme0n1p1 The Linux namespace numbering scheme for namespaces always starts at 1 and increases monotonically regardless of the actual numbering scheme of the namespaces as seen by the physical NVMe controller. Accordingly, the Open firmware path binding utilizes the namespace id as seen by the controller and not the necessarily the one given in the logical block device name. As such we need to use the "nsid" attribute in the sysfs entry for the logical device to properly map back and forth from OP pathnames. Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com> --- scripts/ofpathname | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/ofpathname b/scripts/ofpathname index 2ceae250d758..41b8c5c273e5 100755 --- a/scripts/ofpathname +++ b/scripts/ofpathname @@ -659,6 +659,11 @@ l2of_nvme() devspec=`$CAT $PWD/device/devspec | tr -d '\000'` if [[ -n $devspec ]]; then found=1 + if [[ -n $devnsid ]]; then + # Linux logical nsid might not match nvme controller nsid + goto_dir $dir "nsid" + devnsid=`$CAT $PWD/nsid | tr -d '\000'` + fi break fi done @@ -1609,16 +1614,9 @@ of2l_nvme() local dir local link - for dir in `$FIND /sys/block -name "nvme*n$nsid"`; do + for dir in `$FIND /sys/class/nvme -name "nvme[0-9]*"`; do cd $dir - link=`get_link "device"` # points to nvme[0-9]+ (non-namespace) - if [[ -n $link ]]; then - cd $link - else - continue - fi - link=`get_link "device"` # points to pci address dir if [[ -n $link ]]; then cd $link @@ -1635,6 +1633,16 @@ of2l_nvme() fi done + for dir in `$FIND /sys/block -name "${LOGICAL_DEVNAME}n[0-9]*"`; do + cd $dir + + local devnsid=`$CAT ./nsid 2>/dev/null` + if [[ $devnsid = $nsid ]]; then + LOGICAL_DEVNAME="${dir##*/}" + break + fi + done + if [[ -n $LOGICAL_DEVNAME ]] \ && [[ -n $part ]]; then -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor