diff --git a/scripts/setup.sh b/scripts/setup.sh index a15f2e394..e24e36c56 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -195,13 +195,19 @@ function linux_hugetlbfs_mounts() { function get_block_dev_from_bdf() { local bdf=$1 - local block + local block blocks=() ctrl for block in /sys/block/*; do - if [[ $(readlink -f "$block/device") == *"/$bdf/"* ]]; then - echo "${block##*/}" + if [[ $block == *nvme* ]]; then + ctrl=${block##*/} ctrl=${ctrl%n*} + if [[ -e /sys/class/nvme/$ctrl && $(< "/sys/class/nvme/$ctrl/address") == "$bdf" ]]; then + blocks+=("${block##*/}") + fi + elif [[ $(readlink -f "$block/device") == *"/$bdf/"* ]]; then + blocks+=("${block##*/}") fi done + printf '%s\n' "${blocks[@]}" } function get_used_bdf_block_devs() { diff --git a/test/setup/devices.sh b/test/setup/devices.sh index a2aca649b..062e8a2eb 100755 --- a/test/setup/devices.sh +++ b/test/setup/devices.sh @@ -8,6 +8,7 @@ rootdir=$(readlink -f "$testdir/../../") source "$testdir/common.sh" shopt -s nullglob +shopt -s extglob cleanup() { cleanup_nvme @@ -195,9 +196,9 @@ declare -a blocks=() declare -A blocks_to_pci=() min_disk_size=$((1024 ** 3 * 3)) # 3GB -for block in "/sys/block/nvme"*; do - pci=$(readlink -f "$block/device/device") - pci=${pci##*/} +for block in "/sys/block/nvme"!(*c*); do + ctrl=${block##*/} ctrl=${ctrl%n*} + pci=$(< "/sys/class/nvme/$ctrl/address") [[ ${zoned_devs[*]} == *"$pci"* ]] && continue if ! block_in_use "${block##*/}" && (($(sec_size_to_bytes "${block##*/}") >= min_disk_size)); then blocks+=("${block##*/}")