qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 7/8] qtest/ahci: add qcow2 support to ahci-test


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 7/8] qtest/ahci: add qcow2 support to ahci-test
Date: Wed, 25 Feb 2015 15:27:57 +0000
User-agent: Mutt/1.5.23 (2014-03-12)

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?

Will this work for both in-tree and out-of-tree builds?

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

> +        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
> 
> 

Attachment: pgpFY22WgLAJq.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]