selftests/bpf: Limit URLS parsing logic to actual scope in vmtest

The URLS array is only valid in the download_rootfs function and does
not need to be parsed globally in advance. At the same time, the logic
of loading rootfs is refactored to prepare vmtest for supporting local
rootfs.

Signed-off-by: Pu Lehui <pulehui@huawei.com>
Link: https://lore.kernel.org/r/20240905081401.1894789-5-pulehui@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Pu Lehui 2024-09-05 08:13:55 +00:00 committed by Alexei Starovoitov
parent 67ab80a018
commit 0c3fc330be

View File

@ -92,19 +92,6 @@ populate_url_map()
fi fi
} }
download()
{
local file="$1"
if [[ ! -v URLS[$file] ]]; then
echo "$file not found" >&2
return 1
fi
echo "Downloading $file..." >&2
curl -Lsf "${URLS[$file]}" "${@:2}"
}
newest_rootfs_version() newest_rootfs_version()
{ {
{ {
@ -118,16 +105,30 @@ newest_rootfs_version()
download_rootfs() download_rootfs()
{ {
local rootfsversion="$1" populate_url_map
local dir="$2"
local rootfsversion="$(newest_rootfs_version)"
local file="${ARCH}/libbpf-vmtest-rootfs-$rootfsversion.tar.zst"
if [[ ! -v URLS[$file] ]]; then
echo "$file not found" >&2
return 1
fi
echo "Downloading $file..." >&2
curl -Lsf "${URLS[$file]}" "${@:2}"
}
load_rootfs()
{
local dir="$1"
if ! which zstd &> /dev/null; then if ! which zstd &> /dev/null; then
echo 'Could not find "zstd" on the system, please install zstd' echo 'Could not find "zstd" on the system, please install zstd'
exit 1 exit 1
fi fi
download "${ARCH}/libbpf-vmtest-rootfs-$rootfsversion.tar.zst" | download_rootfs | zstd -d | sudo tar -C "$dir" -x
zstd -d | sudo tar -C "$dir" -x
} }
recompile_kernel() recompile_kernel()
@ -227,7 +228,7 @@ create_vm_image()
mkfs.ext4 -q "${rootfs_img}" mkfs.ext4 -q "${rootfs_img}"
mount_image mount_image
download_rootfs "$(newest_rootfs_version)" "${mount_dir}" load_rootfs "${mount_dir}"
unmount_image unmount_image
} }
@ -402,8 +403,6 @@ main()
make_command="${make_command} KBUILD_OUTPUT=${KBUILD_OUTPUT}" make_command="${make_command} KBUILD_OUTPUT=${KBUILD_OUTPUT}"
fi fi
populate_url_map
local rootfs_img="${OUTPUT_DIR}/${ROOTFS_IMAGE}" local rootfs_img="${OUTPUT_DIR}/${ROOTFS_IMAGE}"
local mount_dir="${OUTPUT_DIR}/${MOUNT_DIR}" local mount_dir="${OUTPUT_DIR}/${MOUNT_DIR}"