From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
Max Reitz <mreitz@redhat.com>
Subject: [PATCH 1/2] iotests/common.qemu: Allow using the QSD
Date: Thu, 1 Apr 2021 15:28:14 +0200 [thread overview]
Message-ID: <20210401132815.139575-2-mreitz@redhat.com> (raw)
In-Reply-To: <20210401132815.139575-1-mreitz@redhat.com>
For block things, we often do not need to run all of qemu, so allow
using the qemu-storage-daemon instead.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/common.qemu | 53 +++++++++++++++++++++++++++-------
1 file changed, 43 insertions(+), 10 deletions(-)
diff --git a/tests/qemu-iotests/common.qemu b/tests/qemu-iotests/common.qemu
index 0fc52d20d7..ca8bb43c63 100644
--- a/tests/qemu-iotests/common.qemu
+++ b/tests/qemu-iotests/common.qemu
@@ -291,6 +291,8 @@ _wait_event()
# $qmp_pretty: Set this variable to 'y' to enable QMP pretty printing.
# $keep_stderr: Set this variable to 'y' to keep QEMU's stderr output on stderr.
# If this variable is empty, stderr will be redirected to stdout.
+# $qsd: Set this variable to 'y' to use the QSD instead of QEMU.
+# stdout and stderr are never redirected when using the QSD.
# Returns:
# $QEMU_HANDLE: set to a handle value to communicate with this QEMU instance.
#
@@ -300,18 +302,31 @@ _launch_qemu()
local fifo_out=
local fifo_in=
+ if [[ $qsd = 'y' ]]; then
+ mon_arg='--monitor'
+ else
+ mon_arg='-mon'
+ fi
+
if (shopt -s nocasematch; [[ "${qemu_comm_method}" == "monitor" ]])
then
- comm="-monitor stdio"
+ comm=(--chardev stdio,id=pipe
+ $mon_arg pipe,mode=readline)
else
local qemu_comm_method="qmp"
if [ "$qmp_pretty" = "y" ]; then
- comm="-monitor none -qmp-pretty stdio"
+ comm=(--chardev stdio,id=pipe
+ $mon_arg pipe,mode=control,pretty=on)
else
- comm="-monitor none -qmp stdio"
+ comm=(--chardev stdio,id=pipe
+ $mon_arg pipe,mode=control,pretty=off)
fi
fi
+ if [[ $qsd != 'y' ]]; then
+ comm=(-monitor none "${comm[@]}")
+ fi
+
fifo_out=${QEMU_FIFO_OUT}_${_QEMU_HANDLE}
fifo_in=${QEMU_FIFO_IN}_${_QEMU_HANDLE}
mkfifo "${fifo_out}"
@@ -322,15 +337,23 @@ _launch_qemu()
object_options="--object secret,id=keysec0,data=$IMGKEYSECRET"
fi
+ if [[ $qsd = 'y' ]]; then
+ cmd=$QSD
+ args=()
+ else
+ cmd=$QEMU
+ args=(-nographic -serial none)
+ fi
+ args+=(${object_options} "${comm[@]}")
+ args+=("$@")
+
+ # Just set both QEMU_NEED_PID and QSD_NEED_PID, it can't hurt.
if [ -z "$keep_stderr" ]; then
- QEMU_NEED_PID='y'\
- ${QEMU} ${object_options} -nographic -serial none ${comm} "${@}" >"${fifo_out}" \
- 2>&1 \
- <"${fifo_in}" &
+ QEMU_NEED_PID='y' QSD_NEED_PID='y' $cmd "${args[@]}" \
+ >"$fifo_out" 2>&1 <"$fifo_in" &
elif [ "$keep_stderr" = "y" ]; then
- QEMU_NEED_PID='y'\
- ${QEMU} ${object_options} -nographic -serial none ${comm} "${@}" >"${fifo_out}" \
- <"${fifo_in}" &
+ QEMU_NEED_PID='y' QSD_NEED_PID='y' $cmd "${args[@]}" \
+ >"$fifo_out" <"$fifo_in" &
else
exit 1
fi
@@ -360,6 +383,16 @@ _launch_qemu()
silent=yes _timed_wait_for ${_QEMU_HANDLE} "^}"
fi
fi
+
+ if [[ $qsd = 'y' ]]; then
+ # Wait for PID file, then move it to where qemu would put it
+ pidfile="$QEMU_TEST_DIR/qemu-storage-daemon.pid"
+ while [[ ! -f $pidfile ]]; do
+ sleep 0.5
+ done
+ mv "$pidfile" "$QEMU_TEST_DIR/qemu-${_QEMU_HANDLE}.pid"
+ fi
+
QEMU_HANDLE=${_QEMU_HANDLE}
let _QEMU_HANDLE++
}
--
2.29.2
next prev parent reply other threads:[~2021-04-01 13:32 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-01 13:28 [PATCH 0/2] iotests/qsd-jobs: Use common.qemu for the QSD Max Reitz
2021-04-01 13:28 ` Max Reitz [this message]
2021-04-01 13:28 ` [PATCH 2/2] " Max Reitz
2021-04-01 14:44 ` Vladimir Sementsov-Ogievskiy
2021-04-01 15:33 ` Max Reitz
2021-04-26 10:06 ` [PATCH 0/2] " Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210401132815.139575-2-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).