diff options
-rw-r--r-- | block/linux-aio.c | 8 | ||||
-rw-r--r-- | bsd-user/main.c | 3 | ||||
-rw-r--r-- | hw/char/virtio-console.c | 25 | ||||
-rw-r--r-- | include/qemu-common.h | 4 | ||||
-rw-r--r-- | linux-user/main.c | 2 | ||||
-rw-r--r-- | qemu-img.c | 2 | ||||
-rw-r--r-- | vl.c | 3 |
7 files changed, 38 insertions, 9 deletions
diff --git a/block/linux-aio.c b/block/linux-aio.c index de3548f2ab..e906abebb3 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -221,7 +221,13 @@ static void ioq_submit(LinuxAioState *s) break; } if (ret < 0) { - abort(); + /* Fail the first request, retry the rest */ + aiocb = QSIMPLEQ_FIRST(&s->io_q.pending); + QSIMPLEQ_REMOVE_HEAD(&s->io_q.pending, next); + s->io_q.in_queue--; + aiocb->ret = ret; + qemu_laio_process_completion(aiocb); + continue; } s->io_q.in_flight += ret; diff --git a/bsd-user/main.c b/bsd-user/main.c index bbba43f716..b4a0a00c3f 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -667,7 +667,8 @@ void cpu_loop(CPUSPARCState *env) static void usage(void) { - printf("qemu-" TARGET_NAME " version " QEMU_VERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n" + printf("qemu-" TARGET_NAME " version " QEMU_VERSION QEMU_PKGVERSION + ", " QEMU_COPYRIGHT "\n" "usage: qemu-" TARGET_NAME " [options] program [arguments...]\n" "BSD CPU emulator (compiled for %s emulation)\n" "\n" diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 2e36481a77..4f0e03d3b7 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -85,8 +85,9 @@ static void set_guest_connected(VirtIOSerialPort *port, int guest_connected) { VirtConsole *vcon = VIRTIO_CONSOLE(port); DeviceState *dev = DEVICE(port); + VirtIOSerialPortClass *k = VIRTIO_SERIAL_PORT_GET_CLASS(port); - if (vcon->chr) { + if (vcon->chr && !k->is_console) { qemu_chr_fe_set_open(vcon->chr, guest_connected); } @@ -156,9 +157,25 @@ static void virtconsole_realize(DeviceState *dev, Error **errp) } if (vcon->chr) { - vcon->chr->explicit_fe_open = 1; - qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, - vcon); + /* + * For consoles we don't block guest data transfer just + * because nothing is connected - we'll just let it go + * whetherever the chardev wants - /dev/null probably. + * + * For serial ports we need 100% reliable data transfer + * so we use the opened/closed signals from chardev to + * trigger open/close of the device + */ + if (k->is_console) { + vcon->chr->explicit_fe_open = 0; + qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, + NULL, vcon); + virtio_serial_open(port); + } else { + vcon->chr->explicit_fe_open = 1; + qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, + chr_event, vcon); + } } } diff --git a/include/qemu-common.h b/include/qemu-common.h index 1f2cb94318..9e8b0bd991 100644 --- a/include/qemu-common.h +++ b/include/qemu-common.h @@ -18,6 +18,10 @@ #include "qemu/option.h" +/* Copyright string for -version arguments, About dialogs, etc */ +#define QEMU_COPYRIGHT "Copyright (c) 2003-2016 " \ + "Fabrice Bellard and the QEMU Project developers" + /* main function, renamed */ #if defined(CONFIG_COCOA) int qemu_main(int argc, char **argv, char **envp); diff --git a/linux-user/main.c b/linux-user/main.c index 462e820469..f2f4d2f05a 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -4000,7 +4000,7 @@ static void handle_arg_strace(const char *arg) static void handle_arg_version(const char *arg) { printf("qemu-" TARGET_NAME " version " QEMU_VERSION QEMU_PKGVERSION - ", Copyright (c) 2003-2008 Fabrice Bellard\n"); + ", " QEMU_COPYRIGHT "\n"); exit(EXIT_SUCCESS); } diff --git a/qemu-img.c b/qemu-img.c index d2865a589e..f204d04136 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -44,7 +44,7 @@ #include <getopt.h> #define QEMU_IMG_VERSION "qemu-img version " QEMU_VERSION QEMU_PKGVERSION \ - ", Copyright (c) 2004-2008 Fabrice Bellard\n" + ", " QEMU_COPYRIGHT "\n" typedef struct img_cmd_t { const char *name; @@ -1914,7 +1914,8 @@ static void main_loop(void) static void version(void) { - printf("QEMU emulator version " QEMU_VERSION QEMU_PKGVERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n"); + printf("QEMU emulator version " QEMU_VERSION QEMU_PKGVERSION ", " + QEMU_COPYRIGHT "\n"); } static void help(int exitcode) |