xref: /spdk/test/setup/common.sh (revision eea06cfd840bd32b8059bc2603d5a4cd83d2c167)
1#  SPDX-License-Identifier: BSD-3-Clause
2#  Copyright (C) 2020 Intel Corporation
3#  All rights reserved.
4#
5
6source "$rootdir/test/common/autotest_common.sh"
7
8setup() {
9	if [[ $1 == output ]]; then
10		"$rootdir/scripts/setup.sh" "${@:2}"
11	else
12		"$rootdir/scripts/setup.sh" "$@" &> /dev/null
13	fi
14}
15
16get_meminfo() {
17	local get=$1
18	local node=$2
19	local var val
20	local mem_f mem
21
22	mem_f=/proc/meminfo
23	if [[ -e /sys/devices/system/node/node$node/meminfo ]]; then
24		mem_f=/sys/devices/system/node/node$node/meminfo
25	elif [[ -n $node ]]; then
26		return 1
27	fi
28	mapfile -t mem < "$mem_f"
29	mem=("${mem[@]#Node +([0-9]) }")
30
31	while IFS=": " read -r var val _; do
32		[[ $var == "$get" ]] || continue
33		echo "$val" && return 0
34	done < <(printf '%s\n' "${mem[@]}")
35	return 1
36}
37
38partition_drive() {
39	local disk=$1
40	local part_no=${2:-2}
41	local size=${3:-1073741824} # default 1G
42
43	local part part_start=0 part_end=0
44	local parts=()
45
46	for ((part = 1; part <= part_no; part++)); do
47		parts+=("${disk}p$part")
48	done
49
50	# Convert size to sectors for more precise partitioning
51	((size /= $(< "/sys/class/block/$disk/queue/hw_sector_size")))
52
53	"$rootdir/scripts/sync_dev_uevents.sh" block/partition "${parts[@]}" &
54
55	# Avoid parted since it generates to much noise over netlink
56	sgdisk "/dev/$disk" --zap-all || :
57	for ((part = 1; part <= part_no; part++)); do
58		((part_start = part_start == 0 ? 2048 : part_end + 1))
59		((part_end = part_start + size - 1))
60		flock "/dev/$disk" sgdisk "/dev/$disk" --new="$part:$part_start:$part_end"
61	done
62	wait "$!"
63}
64
65mkfs() {
66	local dev=$1 mount=$2 size=$3
67
68	mkdir -p "$mount"
69
70	[[ -e $dev ]]
71	mkfs.ext4 -qF "$dev" $size
72	mount "$dev" "$mount"
73}
74
75sec_size_to_bytes() {
76	local dev=$1
77
78	[[ -e /sys/block/$dev ]] || return 1
79	# /size is always represented in 512B blocks
80	echo $(($(< "/sys/block/$dev/size") * 512))
81}
82