From: John Snow <jsnow@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com,
armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 7/8] qtest/ahci: add qcow2 support to ahci-test
Date: Wed, 25 Feb 2015 17:40:00 -0500 [thread overview]
Message-ID: <54EE4F40.90108@redhat.com> (raw)
In-Reply-To: <20150225152757.GD2922@stefanha-thinkpad.redhat.com>
On 02/25/2015 10:27 AM, Stefan Hajnoczi wrote:
> On Thu, Feb 19, 2015 at 05:30:02PM -0500, John Snow wrote:
>> diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c
>> index bc8beb2..3577401 100644
>> --- a/tests/libqos/libqos.c
>> +++ b/tests/libqos/libqos.c
>> @@ -61,3 +61,33 @@ void qtest_shutdown(QOSState *qs)
>> qtest_quit(qs->qts);
>> g_free(qs);
>> }
>> +
>> +int mkqcow2(const char *file, unsigned size_mb)
>> +{
>> + pid_t pid;
>> + int rc;
>> + char buff[32];
>> +
>> + snprintf(buff, 32, "%uM", size_mb);
>> +
>> + pid = fork();
>> + switch (pid) {
>> + case -1:
>> + perror("fork failed");
>> + return -1;
>> + case 0:
>> + close(fileno(stdout));
>> + rc = open("/dev/null", O_WRONLY);
>> + g_assert_cmpint(rc, ==, fileno(stdout));
>> + execl("./qemu-img", "qemu-img", "create", "-f", "qcow2",
>> + file, buff, NULL);
>
> Where is the current working directory set?
>
Nowhere in-program. We assume you are running this via `make check`
which further assumes that qemu-img is in your build tree. We actually
never set an explicit path for where the QEMU binary is either: it's set
to e.g.:
QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64
and then executed via execlp("exec QTEST_QEMU_BINARY", ...)
This patch pulls a similar shortcut.
The Makefile blob doesn't actually appear to really ever explicitly set
a path for where the binaries should be; qemu-img is not defined to be
in any sort of path, so we can assume that all paths are relative to the
Makefile.
What I will do is set QTEST_QEMU_IMG to at least match the direct name
of the QEMU_IMG we generated, so it will have $(EXESUF) attached to it,
for instance.
> Will this work for both in-tree and out-of-tree builds?
>
Yes. I usually run out of tree, but it works fine in-tree too. As long
as relative to the Makefile ./qemu-img$(EXESUF) exists, you will be fine.
If you decide to run this outside of make check, you can always set
QTEST_QEMU_IMG yourself.
> BTW, glib abstracts process spawning, maybe all this can be done in a
> single function call:
> https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html#g-spawn-sync
>
OK, I've implemented it with this call instead. Will send a V2.
>> + perror("execl failed");
>> + exit(-1);
>
> EXIT_FAILURE is provided by the C standard for returning failure. (-1
> is confusing because the shell exit code value cannot be negative.)
>
>> + default:
>> + wait(&rc);
>> + g_assert_cmpint(rc, ==, 0);
>> + return rc;
>> + }
>> +
>> + g_assert_not_reached();
>> +}
>> diff --git a/tests/libqos/libqos.h b/tests/libqos/libqos.h
>> index 612d41e..5abd2bd 100644
>> --- a/tests/libqos/libqos.h
>> +++ b/tests/libqos/libqos.h
>> @@ -19,6 +19,7 @@ typedef struct QOSState {
>> QOSState *qtest_vboot(QOSOps *ops, const char *cmdline_fmt, va_list ap);
>> QOSState *qtest_boot(QOSOps *ops, const char *cmdline_fmt, ...);
>> void qtest_shutdown(QOSState *qs);
>> +int mkqcow2(const char *file, unsigned size_mb);
>>
>> static inline uint64_t qmalloc(QOSState *q, size_t bytes)
>> {
>> --
>> 1.9.3
>>
>>
next prev parent reply other threads:[~2015-02-25 22:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-19 22:29 [Qemu-devel] [PATCH 0/8] ahci: add more IO tests John Snow
2015-02-19 22:29 ` [Qemu-devel] [PATCH 1/8] libqos/ahci: Zero-fill AHCI headers John Snow
2015-02-19 22:29 ` [Qemu-devel] [PATCH 2/8] qtest/ahci: Add a macro bootup routine John Snow
2015-02-19 22:29 ` [Qemu-devel] [PATCH 3/8] libqos/ahci: add ahci command helpers John Snow
2015-02-19 22:29 ` [Qemu-devel] [PATCH 4/8] qtest/ahci: Add DMA test variants John Snow
2015-02-19 22:30 ` [Qemu-devel] [PATCH 5/8] qtest/ahci: Add PIO and LBA48 tests John Snow
2015-02-19 22:30 ` [Qemu-devel] [PATCH 6/8] qtest/ahci: add fragmented dma test John Snow
2015-02-19 22:30 ` [Qemu-devel] [PATCH 7/8] qtest/ahci: add qcow2 support to ahci-test John Snow
2015-02-25 15:27 ` Stefan Hajnoczi
2015-02-25 22:40 ` John Snow [this message]
2015-02-26 11:01 ` Stefan Hajnoczi
2015-02-19 22:30 ` [Qemu-devel] [PATCH 8/8] qtest/ahci: test different disk sectors John Snow
2015-02-24 17:58 ` [Qemu-devel] [PATCH 0/8] ahci: add more IO tests John Snow
2015-02-25 15:29 ` 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=54EE4F40.90108@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
--cc=stefanha@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.