From c7b38dde47fc7fe4ce59b3986563f678c175dbb0 Mon Sep 17 00:00:00 2001 From: Marc Herbert Date: Fri, 25 Apr 2025 23:37:36 +0000 Subject: [PATCH] run_qemu.sh: replace "grep root.img" with losetup --associated Stop parsing the output of losetup --list losetup has enough options to avoid grep-ping its output and avoid accidentally catching the wrong root.img file. Signed-off-by: Marc Herbert --- run_qemu.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/run_qemu.sh b/run_qemu.sh index ea589db..64e5e8b 100755 --- a/run_qemu.sh +++ b/run_qemu.sh @@ -225,14 +225,14 @@ guest_alive() [ -e "$qmp_sock" ] } -rootfs_loop_devs() +loop_devs() { - sudo losetup --list | grep "$_arg_rootfs" | awk '{ print $1 }' + sudo losetup --noheadings --output NAME --associated "$1" } loop_teardown() { - for loopdev in $(rootfs_loop_devs); do + for loopdev in $(loop_devs "$abs_rootfs"); do if [ -b "$loopdev" ]; then sudo umount "${loopdev}p1" || true sudo umount "${loopdev}p2" || true @@ -422,6 +422,8 @@ process_options_logic() set -x fi + abs_rootfs=$(realpath "${builddir}/${_arg_rootfs}") + arch_init if [[ $_arg_cxl_test_run == "on" ]]; then @@ -714,7 +716,7 @@ get_loopdev() { local loopdev num_loopdev - loopdev=$(rootfs_loop_devs) + loopdev=$(loop_devs "$abs_rootfs") # We cannot count newlines with `wc -l` because $( ) trims the trailing # newline which makes 0 and 1 loopback device give the same count. num_loopdev=$(grep -c dev/loop <<<"$loopdev") @@ -722,7 +724,7 @@ get_loopdev() if (( num_loopdev != 1 )); then { lsblk -f || true sudo losetup --list - fail "Expected 1 loopdev for $_arg_rootfs, found $num_loopdev. + fail "Expected 1 loopdev for $abs_rootfs, found $num_loopdev. \tTry 'sudo losetup -D' to remove any stale loopdevs" } >&2 # get_loopdev() stdout is normally captured fi