1eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 2eb53c232Spaul luse# Copyright (C) 2020 Intel Corporation 3eb53c232Spaul luse# All rights reserved. 4eb53c232Spaul luse# 5eb53c232Spaul luse 6ec94874cSMichal Bergersource "$rootdir/test/common/autotest_common.sh" 7ec94874cSMichal Berger 8ec94874cSMichal Bergersetup() { 9ec94874cSMichal Berger if [[ $1 == output ]]; then 10ec94874cSMichal Berger "$rootdir/scripts/setup.sh" "${@:2}" 11ec94874cSMichal Berger else 12ec94874cSMichal Berger "$rootdir/scripts/setup.sh" "$@" &> /dev/null 13ec94874cSMichal Berger fi 14ec94874cSMichal Berger} 15d60bc771SMichal Berger 16d60bc771SMichal Bergerget_meminfo() { 17d60bc771SMichal Berger local get=$1 18d60bc771SMichal Berger local node=$2 19d60bc771SMichal Berger local var val 20d60bc771SMichal Berger local mem_f mem 21d60bc771SMichal Berger 22d60bc771SMichal Berger mem_f=/proc/meminfo 23d60bc771SMichal Berger if [[ -e /sys/devices/system/node/node$node/meminfo ]]; then 24d60bc771SMichal Berger mem_f=/sys/devices/system/node/node$node/meminfo 25327f69eaSMichal Berger elif [[ -n $node ]]; then 26327f69eaSMichal Berger return 1 27d60bc771SMichal Berger fi 28d60bc771SMichal Berger mapfile -t mem < "$mem_f" 29d60bc771SMichal Berger mem=("${mem[@]#Node +([0-9]) }") 30d60bc771SMichal Berger 31d60bc771SMichal Berger while IFS=": " read -r var val _; do 32d60bc771SMichal Berger [[ $var == "$get" ]] || continue 33d60bc771SMichal Berger echo "$val" && return 0 34d60bc771SMichal Berger done < <(printf '%s\n' "${mem[@]}") 35d60bc771SMichal Berger return 1 36d60bc771SMichal Berger} 3718020ec7SMichal Berger 3818020ec7SMichal Bergerpartition_drive() { 3918020ec7SMichal Berger local disk=$1 4018020ec7SMichal Berger local part_no=${2:-2} 4118020ec7SMichal Berger local size=${3:-1073741824} # default 1G 4218020ec7SMichal Berger 4318020ec7SMichal Berger local part part_start=0 part_end=0 4418020ec7SMichal Berger local parts=() 4518020ec7SMichal Berger 4618020ec7SMichal Berger for ((part = 1; part <= part_no; part++)); do 4718020ec7SMichal Berger parts+=("${disk}p$part") 4818020ec7SMichal Berger done 4918020ec7SMichal Berger 5018020ec7SMichal Berger # Convert size to sectors for more precise partitioning 5126c2f987SMichal Berger ((size /= $(< "/sys/class/block/$disk/queue/hw_sector_size"))) 5218020ec7SMichal Berger 5318020ec7SMichal Berger "$rootdir/scripts/sync_dev_uevents.sh" block/partition "${parts[@]}" & 5418020ec7SMichal Berger 5518020ec7SMichal Berger # Avoid parted since it generates to much noise over netlink 5618020ec7SMichal Berger sgdisk "/dev/$disk" --zap-all || : 5718020ec7SMichal Berger for ((part = 1; part <= part_no; part++)); do 5818020ec7SMichal Berger ((part_start = part_start == 0 ? 2048 : part_end + 1)) 5918020ec7SMichal Berger ((part_end = part_start + size - 1)) 60*eea06cfdSMichal Berger flock "/dev/$disk" sgdisk "/dev/$disk" --new="$part:$part_start:$part_end" 6118020ec7SMichal Berger done 6218020ec7SMichal Berger wait "$!" 6318020ec7SMichal Berger} 6418020ec7SMichal Berger 6518020ec7SMichal Bergermkfs() { 6618020ec7SMichal Berger local dev=$1 mount=$2 size=$3 6718020ec7SMichal Berger 6818020ec7SMichal Berger mkdir -p "$mount" 6918020ec7SMichal Berger 7018020ec7SMichal Berger [[ -e $dev ]] 7118020ec7SMichal Berger mkfs.ext4 -qF "$dev" $size 7218020ec7SMichal Berger mount "$dev" "$mount" 7318020ec7SMichal Berger} 740c78378aSMichal Berger 750c78378aSMichal Bergersec_size_to_bytes() { 760c78378aSMichal Berger local dev=$1 770c78378aSMichal Berger 780c78378aSMichal Berger [[ -e /sys/block/$dev ]] || return 1 790c78378aSMichal Berger # /size is always represented in 512B blocks 800c78378aSMichal Berger echo $(($(< "/sys/block/$dev/size") * 512)) 810c78378aSMichal Berger} 82