* [Qemu-devel] [PULL 0/8] Block patches @ 2016-07-18 16:59 Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 1/8] spec/parallels: fix a mistake Stefan Hajnoczi ` (8 more replies) 0 siblings, 9 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi The following changes since commit 3913d3707e3debfbf0d2d014a1a793394993b088: Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.7-20160718' into staging (2016-07-18 11:24:15 +0100) are available in the git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to e1029ae26d96d5de78c2d9af5eddcea92e73a46a: MAINTAINERS: Add include/block/aio.h to block I/O path section (2016-07-18 15:10:52 +0100) ---------------------------------------------------------------- This is not quite a v2 because I have added more patches. "linux-aio: share one LinuxAioState within an AioContext" is now fixed under mingw. ---------------------------------------------------------------- Cao jin (3): aio_ctx_check: follow CODING_STYLE aio-posix: remove useless parameter virtio-blk: dataplane cleanup Fam Zheng (1): MAINTAINERS: Add include/block/aio.h to block I/O path section Paolo Bonzini (1): linux-aio: share one LinuxAioState within an AioContext Roman Pen (1): linux-aio: prevent submitting more than MAX_EVENTS Stefan Hajnoczi (1): checkpatch: consider git extended headers valid patches Vladimir Sementsov-Ogievskiy (1): spec/parallels: fix a mistake MAINTAINERS | 1 + aio-posix.c | 3 +- aio-win32.c | 2 +- async.c | 33 ++++++++--- block/linux-aio.c | 36 +++++++----- block/raw-aio.h | 68 ----------------------- block/raw-posix.c | 119 +++++----------------------------------- block/raw-win32.c | 2 +- block/win32-aio.c | 2 +- docs/specs/parallels.txt | 2 +- hw/block/dataplane/virtio-blk.c | 6 +- include/block/aio.h | 15 ++++- include/block/raw-aio.h | 68 +++++++++++++++++++++++ scripts/checkpatch.pl | 5 ++ 14 files changed, 158 insertions(+), 204 deletions(-) delete mode 100644 block/raw-aio.h create mode 100644 include/block/raw-aio.h -- 2.7.4 ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 1/8] spec/parallels: fix a mistake 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 2/8] linux-aio: share one LinuxAioState within an AioContext Stefan Hajnoczi ` (7 subsequent siblings) 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Vladimir Sementsov-Ogievskiy, Denis V . Lunev, Stefan Hajnoczi From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> We have only one flag for now - Empty Image flag. The patch fixes unused bits specification and marks bit 1 as usused. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Denis V. Lunev <den@openvz.org> CC: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- docs/specs/parallels.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/specs/parallels.txt b/docs/specs/parallels.txt index b4fe229..e9271eb 100644 --- a/docs/specs/parallels.txt +++ b/docs/specs/parallels.txt @@ -94,7 +94,7 @@ Bytes: Bit 0: Empty Image bit. If set, the image should be considered clear. - Bits 2-31: Unused. + Bits 1-31: Unused. 56 - 63: ext_off Format Extension offset, an offset, in sectors, from the start of -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 2/8] linux-aio: share one LinuxAioState within an AioContext 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 1/8] spec/parallels: fix a mistake Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 3/8] aio_ctx_check: follow CODING_STYLE Stefan Hajnoczi ` (6 subsequent siblings) 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Paolo Bonzini, Stefan Hajnoczi From: Paolo Bonzini <pbonzini@redhat.com> This has better performance because it executes fewer system calls and does not use a bottom half per disk. Originally proposed by Ming Lei. [Changed #include "raw-aio.h" to "block/raw-aio.h" in win32-aio.c to fix build error as reported by Peter Maydell <peter.maydell@linaro.org>. --Stefan] Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 1467650000-51385-1-git-send-email-pbonzini@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> squash! linux-aio: share one LinuxAioState within an AioContext --- async.c | 23 ++++++++++ block/linux-aio.c | 10 ++-- block/raw-aio.h | 68 --------------------------- block/raw-posix.c | 119 ++++++------------------------------------------ block/raw-win32.c | 2 +- block/win32-aio.c | 2 +- include/block/aio.h | 13 ++++++ include/block/raw-aio.h | 68 +++++++++++++++++++++++++++ 8 files changed, 126 insertions(+), 179 deletions(-) delete mode 100644 block/raw-aio.h create mode 100644 include/block/raw-aio.h diff --git a/async.c b/async.c index b4bf205..6caa98c 100644 --- a/async.c +++ b/async.c @@ -29,6 +29,7 @@ #include "block/thread-pool.h" #include "qemu/main-loop.h" #include "qemu/atomic.h" +#include "block/raw-aio.h" /***********************************************************/ /* bottom halves (can be seen as timers which expire ASAP) */ @@ -242,6 +243,14 @@ aio_ctx_finalize(GSource *source) qemu_bh_delete(ctx->notify_dummy_bh); thread_pool_free(ctx->thread_pool); +#ifdef CONFIG_LINUX_AIO + if (ctx->linux_aio) { + laio_detach_aio_context(ctx->linux_aio, ctx); + laio_cleanup(ctx->linux_aio); + ctx->linux_aio = NULL; + } +#endif + qemu_mutex_lock(&ctx->bh_lock); while (ctx->first_bh) { QEMUBH *next = ctx->first_bh->next; @@ -282,6 +291,17 @@ ThreadPool *aio_get_thread_pool(AioContext *ctx) return ctx->thread_pool; } +#ifdef CONFIG_LINUX_AIO +LinuxAioState *aio_get_linux_aio(AioContext *ctx) +{ + if (!ctx->linux_aio) { + ctx->linux_aio = laio_init(); + laio_attach_aio_context(ctx->linux_aio, ctx); + } + return ctx->linux_aio; +} +#endif + void aio_notify(AioContext *ctx) { /* Write e.g. bh->scheduled before reading ctx->notify_me. Pairs @@ -345,6 +365,9 @@ AioContext *aio_context_new(Error **errp) false, (EventNotifierHandler *) event_notifier_dummy_cb); +#ifdef CONFIG_LINUX_AIO + ctx->linux_aio = NULL; +#endif ctx->thread_pool = NULL; qemu_mutex_init(&ctx->bh_lock); rfifolock_init(&ctx->lock, aio_rfifolock_cb, ctx); diff --git a/block/linux-aio.c b/block/linux-aio.c index 5c104bd..1d702a5 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -50,6 +50,8 @@ typedef struct { } LaioQueue; struct LinuxAioState { + AioContext *aio_context; + io_context_t ctx; EventNotifier e; @@ -227,15 +229,14 @@ static void ioq_submit(LinuxAioState *s) void laio_io_plug(BlockDriverState *bs, LinuxAioState *s) { - assert(!s->io_q.plugged); - s->io_q.plugged = 1; + s->io_q.plugged++; } void laio_io_unplug(BlockDriverState *bs, LinuxAioState *s) { assert(s->io_q.plugged); - s->io_q.plugged = 0; - if (!s->io_q.blocked && !QSIMPLEQ_EMPTY(&s->io_q.pending)) { + if (--s->io_q.plugged == 0 && + !s->io_q.blocked && !QSIMPLEQ_EMPTY(&s->io_q.pending)) { ioq_submit(s); } } @@ -325,6 +326,7 @@ void laio_detach_aio_context(LinuxAioState *s, AioContext *old_context) void laio_attach_aio_context(LinuxAioState *s, AioContext *new_context) { + s->aio_context = new_context; s->completion_bh = aio_bh_new(new_context, qemu_laio_completion_bh, s); aio_set_event_notifier(new_context, &s->e, false, qemu_laio_completion_cb); diff --git a/block/raw-aio.h b/block/raw-aio.h deleted file mode 100644 index a4cdbbf..0000000 --- a/block/raw-aio.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Declarations for AIO in the raw protocol - * - * Copyright IBM, Corp. 2008 - * - * Authors: - * Anthony Liguori <aliguori@us.ibm.com> - * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. - * - * Contributions after 2012-01-13 are licensed under the terms of the - * GNU GPL, version 2 or (at your option) any later version. - */ -#ifndef QEMU_RAW_AIO_H -#define QEMU_RAW_AIO_H - -#include "qemu/coroutine.h" -#include "qemu/iov.h" - -/* AIO request types */ -#define QEMU_AIO_READ 0x0001 -#define QEMU_AIO_WRITE 0x0002 -#define QEMU_AIO_IOCTL 0x0004 -#define QEMU_AIO_FLUSH 0x0008 -#define QEMU_AIO_DISCARD 0x0010 -#define QEMU_AIO_WRITE_ZEROES 0x0020 -#define QEMU_AIO_TYPE_MASK \ - (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH| \ - QEMU_AIO_DISCARD|QEMU_AIO_WRITE_ZEROES) - -/* AIO flags */ -#define QEMU_AIO_MISALIGNED 0x1000 -#define QEMU_AIO_BLKDEV 0x2000 - - -/* linux-aio.c - Linux native implementation */ -#ifdef CONFIG_LINUX_AIO -typedef struct LinuxAioState LinuxAioState; -LinuxAioState *laio_init(void); -void laio_cleanup(LinuxAioState *s); -int coroutine_fn laio_co_submit(BlockDriverState *bs, LinuxAioState *s, int fd, - uint64_t offset, QEMUIOVector *qiov, int type); -BlockAIOCB *laio_submit(BlockDriverState *bs, LinuxAioState *s, int fd, - int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, - BlockCompletionFunc *cb, void *opaque, int type); -void laio_detach_aio_context(LinuxAioState *s, AioContext *old_context); -void laio_attach_aio_context(LinuxAioState *s, AioContext *new_context); -void laio_io_plug(BlockDriverState *bs, LinuxAioState *s); -void laio_io_unplug(BlockDriverState *bs, LinuxAioState *s); -#endif - -#ifdef _WIN32 -typedef struct QEMUWin32AIOState QEMUWin32AIOState; -QEMUWin32AIOState *win32_aio_init(void); -void win32_aio_cleanup(QEMUWin32AIOState *aio); -int win32_aio_attach(QEMUWin32AIOState *aio, HANDLE hfile); -BlockAIOCB *win32_aio_submit(BlockDriverState *bs, - QEMUWin32AIOState *aio, HANDLE hfile, - int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, - BlockCompletionFunc *cb, void *opaque, int type); -void win32_aio_detach_aio_context(QEMUWin32AIOState *aio, - AioContext *old_context); -void win32_aio_attach_aio_context(QEMUWin32AIOState *aio, - AioContext *new_context); -#endif - -#endif /* QEMU_RAW_AIO_H */ diff --git a/block/raw-posix.c b/block/raw-posix.c index d1c3bd8..20f4d7a 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -32,7 +32,7 @@ #include "trace.h" #include "block/thread-pool.h" #include "qemu/iov.h" -#include "raw-aio.h" +#include "block/raw-aio.h" #include "qapi/util.h" #include "qapi/qmp/qstring.h" @@ -137,10 +137,6 @@ typedef struct BDRVRawState { int open_flags; size_t buf_align; -#ifdef CONFIG_LINUX_AIO - int use_aio; - LinuxAioState *aio_ctx; -#endif #ifdef CONFIG_XFS bool is_xfs:1; #endif @@ -154,9 +150,6 @@ typedef struct BDRVRawState { typedef struct BDRVRawReopenState { int fd; int open_flags; -#ifdef CONFIG_LINUX_AIO - int use_aio; -#endif } BDRVRawReopenState; static int fd_open(BlockDriverState *bs); @@ -374,58 +367,15 @@ static void raw_parse_flags(int bdrv_flags, int *open_flags) } } -static void raw_detach_aio_context(BlockDriverState *bs) -{ -#ifdef CONFIG_LINUX_AIO - BDRVRawState *s = bs->opaque; - - if (s->use_aio) { - laio_detach_aio_context(s->aio_ctx, bdrv_get_aio_context(bs)); - } -#endif -} - -static void raw_attach_aio_context(BlockDriverState *bs, - AioContext *new_context) -{ -#ifdef CONFIG_LINUX_AIO - BDRVRawState *s = bs->opaque; - - if (s->use_aio) { - laio_attach_aio_context(s->aio_ctx, new_context); - } -#endif -} - #ifdef CONFIG_LINUX_AIO -static int raw_set_aio(LinuxAioState **aio_ctx, int *use_aio, int bdrv_flags) +static bool raw_use_aio(int bdrv_flags) { - int ret = -1; - assert(aio_ctx != NULL); - assert(use_aio != NULL); /* * Currently Linux do AIO only for files opened with O_DIRECT * specified so check NOCACHE flag too */ - if ((bdrv_flags & (BDRV_O_NOCACHE|BDRV_O_NATIVE_AIO)) == - (BDRV_O_NOCACHE|BDRV_O_NATIVE_AIO)) { - - /* if non-NULL, laio_init() has already been run */ - if (*aio_ctx == NULL) { - *aio_ctx = laio_init(); - if (!*aio_ctx) { - goto error; - } - } - *use_aio = 1; - } else { - *use_aio = 0; - } - - ret = 0; - -error: - return ret; + return (bdrv_flags & (BDRV_O_NOCACHE|BDRV_O_NATIVE_AIO)) == + (BDRV_O_NOCACHE|BDRV_O_NATIVE_AIO); } #endif @@ -494,13 +444,7 @@ static int raw_open_common(BlockDriverState *bs, QDict *options, s->fd = fd; #ifdef CONFIG_LINUX_AIO - if (raw_set_aio(&s->aio_ctx, &s->use_aio, bdrv_flags)) { - qemu_close(fd); - ret = -errno; - error_setg_errno(errp, -ret, "Could not set AIO state"); - goto fail; - } - if (!s->use_aio && (bdrv_flags & BDRV_O_NATIVE_AIO)) { + if (!raw_use_aio(bdrv_flags) && (bdrv_flags & BDRV_O_NATIVE_AIO)) { error_setg(errp, "aio=native was specified, but it requires " "cache.direct=on, which was not specified."); ret = -EINVAL; @@ -567,8 +511,6 @@ static int raw_open_common(BlockDriverState *bs, QDict *options, } #endif - raw_attach_aio_context(bs, bdrv_get_aio_context(bs)); - ret = 0; fail: if (filename && (bdrv_flags & BDRV_O_TEMPORARY)) { @@ -603,18 +545,6 @@ static int raw_reopen_prepare(BDRVReopenState *state, state->opaque = g_new0(BDRVRawReopenState, 1); raw_s = state->opaque; -#ifdef CONFIG_LINUX_AIO - raw_s->use_aio = s->use_aio; - - /* we can use s->aio_ctx instead of a copy, because the use_aio flag is - * valid in the 'false' condition even if aio_ctx is set, and raw_set_aio() - * won't override aio_ctx if aio_ctx is non-NULL */ - if (raw_set_aio(&s->aio_ctx, &raw_s->use_aio, state->flags)) { - error_setg(errp, "Could not set AIO state"); - return -1; - } -#endif - if (s->type == FTYPE_CD) { raw_s->open_flags |= O_NONBLOCK; } @@ -689,9 +619,6 @@ static void raw_reopen_commit(BDRVReopenState *state) qemu_close(s->fd); s->fd = raw_s->fd; -#ifdef CONFIG_LINUX_AIO - s->use_aio = raw_s->use_aio; -#endif g_free(state->opaque); state->opaque = NULL; @@ -1329,9 +1256,10 @@ static int coroutine_fn raw_co_prw(BlockDriverState *bs, uint64_t offset, if (!bdrv_qiov_is_aligned(bs, qiov)) { type |= QEMU_AIO_MISALIGNED; #ifdef CONFIG_LINUX_AIO - } else if (s->use_aio) { + } else if (bs->open_flags & BDRV_O_NATIVE_AIO) { + LinuxAioState *aio = aio_get_linux_aio(bdrv_get_aio_context(bs)); assert(qiov->size == bytes); - return laio_co_submit(bs, s->aio_ctx, s->fd, offset, qiov, type); + return laio_co_submit(bs, aio, s->fd, offset, qiov, type); #endif } } @@ -1357,9 +1285,9 @@ static int coroutine_fn raw_co_pwritev(BlockDriverState *bs, uint64_t offset, static void raw_aio_plug(BlockDriverState *bs) { #ifdef CONFIG_LINUX_AIO - BDRVRawState *s = bs->opaque; - if (s->use_aio) { - laio_io_plug(bs, s->aio_ctx); + if (bs->open_flags & BDRV_O_NATIVE_AIO) { + LinuxAioState *aio = aio_get_linux_aio(bdrv_get_aio_context(bs)); + laio_io_plug(bs, aio); } #endif } @@ -1367,9 +1295,9 @@ static void raw_aio_plug(BlockDriverState *bs) static void raw_aio_unplug(BlockDriverState *bs) { #ifdef CONFIG_LINUX_AIO - BDRVRawState *s = bs->opaque; - if (s->use_aio) { - laio_io_unplug(bs, s->aio_ctx); + if (bs->open_flags & BDRV_O_NATIVE_AIO) { + LinuxAioState *aio = aio_get_linux_aio(bdrv_get_aio_context(bs)); + laio_io_unplug(bs, aio); } #endif } @@ -1389,13 +1317,6 @@ static void raw_close(BlockDriverState *bs) { BDRVRawState *s = bs->opaque; - raw_detach_aio_context(bs); - -#ifdef CONFIG_LINUX_AIO - if (s->use_aio) { - laio_cleanup(s->aio_ctx); - } -#endif if (s->fd >= 0) { qemu_close(s->fd); s->fd = -1; @@ -1954,9 +1875,6 @@ BlockDriver bdrv_file = { .bdrv_get_allocated_file_size = raw_get_allocated_file_size, - .bdrv_detach_aio_context = raw_detach_aio_context, - .bdrv_attach_aio_context = raw_attach_aio_context, - .create_opts = &raw_create_opts, }; @@ -2402,9 +2320,6 @@ static BlockDriver bdrv_host_device = { .bdrv_probe_blocksizes = hdev_probe_blocksizes, .bdrv_probe_geometry = hdev_probe_geometry, - .bdrv_detach_aio_context = raw_detach_aio_context, - .bdrv_attach_aio_context = raw_attach_aio_context, - /* generic scsi device */ #ifdef __linux__ .bdrv_aio_ioctl = hdev_aio_ioctl, @@ -2524,9 +2439,6 @@ static BlockDriver bdrv_host_cdrom = { .bdrv_get_allocated_file_size = raw_get_allocated_file_size, - .bdrv_detach_aio_context = raw_detach_aio_context, - .bdrv_attach_aio_context = raw_attach_aio_context, - /* removable device support */ .bdrv_is_inserted = cdrom_is_inserted, .bdrv_eject = cdrom_eject, @@ -2657,9 +2569,6 @@ static BlockDriver bdrv_host_cdrom = { .bdrv_get_allocated_file_size = raw_get_allocated_file_size, - .bdrv_detach_aio_context = raw_detach_aio_context, - .bdrv_attach_aio_context = raw_attach_aio_context, - /* removable device support */ .bdrv_is_inserted = cdrom_is_inserted, .bdrv_eject = cdrom_eject, diff --git a/block/raw-win32.c b/block/raw-win32.c index 62edb1a..9b813d9 100644 --- a/block/raw-win32.c +++ b/block/raw-win32.c @@ -27,7 +27,7 @@ #include "qemu/timer.h" #include "block/block_int.h" #include "qemu/module.h" -#include "raw-aio.h" +#include "block/raw-aio.h" #include "trace.h" #include "block/thread-pool.h" #include "qemu/iov.h" diff --git a/block/win32-aio.c b/block/win32-aio.c index 2d509a9..95e3ab1 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -27,7 +27,7 @@ #include "block/block_int.h" #include "qemu/module.h" #include "block/aio.h" -#include "raw-aio.h" +#include "block/raw-aio.h" #include "qemu/event_notifier.h" #include "qemu/iov.h" #include <windows.h> diff --git a/include/block/aio.h b/include/block/aio.h index 88a64ee..afd72a7 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -47,6 +47,9 @@ typedef struct AioHandler AioHandler; typedef void QEMUBHFunc(void *opaque); typedef void IOHandler(void *opaque); +struct ThreadPool; +struct LinuxAioState; + struct AioContext { GSource source; @@ -119,6 +122,13 @@ struct AioContext { /* Thread pool for performing work and receiving completion callbacks */ struct ThreadPool *thread_pool; +#ifdef CONFIG_LINUX_AIO + /* State for native Linux AIO. Uses aio_context_acquire/release for + * locking. + */ + struct LinuxAioState *linux_aio; +#endif + /* TimerLists for calling timers - one per clock type */ QEMUTimerListGroup tlg; @@ -335,6 +345,9 @@ GSource *aio_get_g_source(AioContext *ctx); /* Return the ThreadPool bound to this AioContext */ struct ThreadPool *aio_get_thread_pool(AioContext *ctx); +/* Return the LinuxAioState bound to this AioContext */ +struct LinuxAioState *aio_get_linux_aio(AioContext *ctx); + /** * aio_timer_new: * @ctx: the aio context diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h new file mode 100644 index 0000000..a4cdbbf --- /dev/null +++ b/include/block/raw-aio.h @@ -0,0 +1,68 @@ +/* + * Declarations for AIO in the raw protocol + * + * Copyright IBM, Corp. 2008 + * + * Authors: + * Anthony Liguori <aliguori@us.ibm.com> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ +#ifndef QEMU_RAW_AIO_H +#define QEMU_RAW_AIO_H + +#include "qemu/coroutine.h" +#include "qemu/iov.h" + +/* AIO request types */ +#define QEMU_AIO_READ 0x0001 +#define QEMU_AIO_WRITE 0x0002 +#define QEMU_AIO_IOCTL 0x0004 +#define QEMU_AIO_FLUSH 0x0008 +#define QEMU_AIO_DISCARD 0x0010 +#define QEMU_AIO_WRITE_ZEROES 0x0020 +#define QEMU_AIO_TYPE_MASK \ + (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH| \ + QEMU_AIO_DISCARD|QEMU_AIO_WRITE_ZEROES) + +/* AIO flags */ +#define QEMU_AIO_MISALIGNED 0x1000 +#define QEMU_AIO_BLKDEV 0x2000 + + +/* linux-aio.c - Linux native implementation */ +#ifdef CONFIG_LINUX_AIO +typedef struct LinuxAioState LinuxAioState; +LinuxAioState *laio_init(void); +void laio_cleanup(LinuxAioState *s); +int coroutine_fn laio_co_submit(BlockDriverState *bs, LinuxAioState *s, int fd, + uint64_t offset, QEMUIOVector *qiov, int type); +BlockAIOCB *laio_submit(BlockDriverState *bs, LinuxAioState *s, int fd, + int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, + BlockCompletionFunc *cb, void *opaque, int type); +void laio_detach_aio_context(LinuxAioState *s, AioContext *old_context); +void laio_attach_aio_context(LinuxAioState *s, AioContext *new_context); +void laio_io_plug(BlockDriverState *bs, LinuxAioState *s); +void laio_io_unplug(BlockDriverState *bs, LinuxAioState *s); +#endif + +#ifdef _WIN32 +typedef struct QEMUWin32AIOState QEMUWin32AIOState; +QEMUWin32AIOState *win32_aio_init(void); +void win32_aio_cleanup(QEMUWin32AIOState *aio); +int win32_aio_attach(QEMUWin32AIOState *aio, HANDLE hfile); +BlockAIOCB *win32_aio_submit(BlockDriverState *bs, + QEMUWin32AIOState *aio, HANDLE hfile, + int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, + BlockCompletionFunc *cb, void *opaque, int type); +void win32_aio_detach_aio_context(QEMUWin32AIOState *aio, + AioContext *old_context); +void win32_aio_attach_aio_context(QEMUWin32AIOState *aio, + AioContext *new_context); +#endif + +#endif /* QEMU_RAW_AIO_H */ -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 3/8] aio_ctx_check: follow CODING_STYLE 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 1/8] spec/parallels: fix a mistake Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 2/8] linux-aio: share one LinuxAioState within an AioContext Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 4/8] linux-aio: prevent submitting more than MAX_EVENTS Stefan Hajnoczi ` (5 subsequent siblings) 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Cao jin, Stefan Hajnoczi From: Cao jin <caoj.fnst@cn.fujitsu.com> replace tab with spaces Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> Message-id: 1468501843-14927-1-git-send-email-caoj.fnst@cn.fujitsu.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- async.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/async.c b/async.c index 6caa98c..0e0efc3 100644 --- a/async.c +++ b/async.c @@ -218,7 +218,7 @@ aio_ctx_check(GSource *source) for (bh = ctx->first_bh; bh; bh = bh->next) { if (!bh->deleted && bh->scheduled) { return true; - } + } } return aio_pending(ctx) || (timerlistgroup_deadline_ns(&ctx->tlg) == 0); } -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 4/8] linux-aio: prevent submitting more than MAX_EVENTS 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi ` (2 preceding siblings ...) 2016-07-18 16:59 ` [Qemu-devel] [PULL 3/8] aio_ctx_check: follow CODING_STYLE Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 5/8] aio-posix: remove useless parameter Stefan Hajnoczi ` (4 subsequent siblings) 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Roman Pen, Stefan Hajnoczi From: Roman Pen <roman.penyaev@profitbricks.com> Invoking io_setup(MAX_EVENTS) we ask kernel to create ring buffer for us with specified number of events. But kernel ring buffer allocation logic is a bit tricky (ring buffer is page size aligned + some percpu allocation are required) so eventually more than requested events number is allocated. >From a userspace side we have to follow the convention and should not try to io_submit() more or logic, which consumes completed events, should be changed accordingly. The pitfall is in the following sequence: MAX_EVENTS = 128 io_setup(MAX_EVENTS) io_submit(MAX_EVENTS) io_submit(MAX_EVENTS) /* now 256 events are in-flight */ io_getevents(MAX_EVENTS) = 128 /* we can handle only 128 events at once, to be sure * that nothing is pended the io_getevents(MAX_EVENTS) * call must be invoked once more or hang will happen. */ To prevent the hang or reiteration of io_getevents() call this patch restricts the number of in-flights, which is now limited to MAX_EVENTS. Signed-off-by: Roman Pen <roman.penyaev@profitbricks.com> Reviewed-by: Fam Zheng <famz@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1468415004-31755-1-git-send-email-roman.penyaev@profitbricks.com Cc: Stefan Hajnoczi <stefanha@redhat.com> Cc: qemu-devel@nongnu.org Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- block/linux-aio.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/block/linux-aio.c b/block/linux-aio.c index 1d702a5..de3548f 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -28,8 +28,6 @@ */ #define MAX_EVENTS 128 -#define MAX_QUEUED_IO 128 - struct qemu_laiocb { BlockAIOCB common; Coroutine *co; @@ -44,7 +42,8 @@ struct qemu_laiocb { typedef struct { int plugged; - unsigned int n; + unsigned int in_queue; + unsigned int in_flight; bool blocked; QSIMPLEQ_HEAD(, qemu_laiocb) pending; } LaioQueue; @@ -131,6 +130,7 @@ static void qemu_laio_completion_bh(void *opaque) s->event_max = 0; return; /* no more events */ } + s->io_q.in_flight -= s->event_max; } /* Reschedule so nested event loops see currently pending completions */ @@ -192,7 +192,8 @@ static void ioq_init(LaioQueue *io_q) { QSIMPLEQ_INIT(&io_q->pending); io_q->plugged = 0; - io_q->n = 0; + io_q->in_queue = 0; + io_q->in_flight = 0; io_q->blocked = false; } @@ -200,14 +201,17 @@ static void ioq_submit(LinuxAioState *s) { int ret, len; struct qemu_laiocb *aiocb; - struct iocb *iocbs[MAX_QUEUED_IO]; + struct iocb *iocbs[MAX_EVENTS]; QSIMPLEQ_HEAD(, qemu_laiocb) completed; do { + if (s->io_q.in_flight >= MAX_EVENTS) { + break; + } len = 0; QSIMPLEQ_FOREACH(aiocb, &s->io_q.pending, next) { iocbs[len++] = &aiocb->iocb; - if (len == MAX_QUEUED_IO) { + if (s->io_q.in_flight + len >= MAX_EVENTS) { break; } } @@ -220,11 +224,12 @@ static void ioq_submit(LinuxAioState *s) abort(); } - s->io_q.n -= ret; + s->io_q.in_flight += ret; + s->io_q.in_queue -= ret; aiocb = container_of(iocbs[ret - 1], struct qemu_laiocb, iocb); QSIMPLEQ_SPLIT_AFTER(&s->io_q.pending, aiocb, next, &completed); } while (ret == len && !QSIMPLEQ_EMPTY(&s->io_q.pending)); - s->io_q.blocked = (s->io_q.n > 0); + s->io_q.blocked = (s->io_q.in_queue > 0); } void laio_io_plug(BlockDriverState *bs, LinuxAioState *s) @@ -264,9 +269,10 @@ static int laio_do_submit(int fd, struct qemu_laiocb *laiocb, off_t offset, io_set_eventfd(&laiocb->iocb, event_notifier_get_fd(&s->e)); QSIMPLEQ_INSERT_TAIL(&s->io_q.pending, laiocb, next); - s->io_q.n++; + s->io_q.in_queue++; if (!s->io_q.blocked && - (!s->io_q.plugged || s->io_q.n >= MAX_QUEUED_IO)) { + (!s->io_q.plugged || + s->io_q.in_flight + s->io_q.in_queue >= MAX_EVENTS)) { ioq_submit(s); } -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 5/8] aio-posix: remove useless parameter 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi ` (3 preceding siblings ...) 2016-07-18 16:59 ` [Qemu-devel] [PULL 4/8] linux-aio: prevent submitting more than MAX_EVENTS Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 6/8] checkpatch: consider git extended headers valid patches Stefan Hajnoczi ` (3 subsequent siblings) 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Cao jin, Stefan Hajnoczi, Fam Zheng, Eric Blake From: Cao jin <caoj.fnst@cn.fujitsu.com> Parameter **errp of aio_context_setup() is useless, remove it and clean up the related code. Cc: Stefan Hajnoczi <stefanha@redhat.com> Cc: Fam Zheng <famz@redhat.com> Cc: Eric Blake <eblake@redhat.com> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 1468578524-23433-1-git-send-email-caoj.fnst@cn.fujitsu.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- aio-posix.c | 3 ++- aio-win32.c | 2 +- async.c | 8 ++------ include/block/aio.h | 2 +- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/aio-posix.c b/aio-posix.c index 6006122..43162a9 100644 --- a/aio-posix.c +++ b/aio-posix.c @@ -485,12 +485,13 @@ bool aio_poll(AioContext *ctx, bool blocking) return progress; } -void aio_context_setup(AioContext *ctx, Error **errp) +void aio_context_setup(AioContext *ctx) { #ifdef CONFIG_EPOLL_CREATE1 assert(!ctx->epollfd); ctx->epollfd = epoll_create1(EPOLL_CLOEXEC); if (ctx->epollfd == -1) { + fprintf(stderr, "Failed to create epoll instance: %s", strerror(errno)); ctx->epoll_available = false; } else { ctx->epoll_available = true; diff --git a/aio-win32.c b/aio-win32.c index 6aaa32a..c8c249e 100644 --- a/aio-win32.c +++ b/aio-win32.c @@ -371,6 +371,6 @@ bool aio_poll(AioContext *ctx, bool blocking) return progress; } -void aio_context_setup(AioContext *ctx, Error **errp) +void aio_context_setup(AioContext *ctx) { } diff --git a/async.c b/async.c index 0e0efc3..3bca9b0 100644 --- a/async.c +++ b/async.c @@ -347,14 +347,10 @@ AioContext *aio_context_new(Error **errp) { int ret; AioContext *ctx; - Error *local_err = NULL; ctx = (AioContext *) g_source_new(&aio_source_funcs, sizeof(AioContext)); - aio_context_setup(ctx, &local_err); - if (local_err) { - error_propagate(errp, local_err); - goto fail; - } + aio_context_setup(ctx); + ret = event_notifier_init(&ctx->notifier, false); if (ret < 0) { error_setg_errno(errp, -ret, "Failed to initialize event notifier"); diff --git a/include/block/aio.h b/include/block/aio.h index afd72a7..209551d 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -452,6 +452,6 @@ static inline bool aio_node_check(AioContext *ctx, bool is_external) * * Initialize the aio context. */ -void aio_context_setup(AioContext *ctx, Error **errp); +void aio_context_setup(AioContext *ctx); #endif -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 6/8] checkpatch: consider git extended headers valid patches 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi ` (4 preceding siblings ...) 2016-07-18 16:59 ` [Qemu-devel] [PULL 5/8] aio-posix: remove useless parameter Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 7/8] virtio-blk: dataplane cleanup Stefan Hajnoczi ` (2 subsequent siblings) 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi Renames look like this with git-diff(1) when diff.renames = true is set: diff --git a/a b/b similarity index 100% rename from a rename to b This raises the "Does not appear to be a unified-diff format patch" error because checkpatch.pl only considers a diff valid if it contains at least one "@@" hunk. This patch accepts renames and copies too so that checkpatch.pl exits successfully when a diff only renames/copies files. The git diff extended header format is described on the git-diff(1) man page. Reported-by: Colin Lord <clord@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 1468576014-28788-1-git-send-email-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- scripts/checkpatch.pl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index cf32c8f..afa7f79 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1279,6 +1279,11 @@ sub process { } } +# Accept git diff extended headers as valid patches + if ($line =~ /^(?:rename|copy) (?:from|to) [\w\/\.\-]+\s*$/) { + $is_patch = 1; + } + #check the patch for a signoff: if ($line =~ /^\s*signed-off-by:/i) { # This is a signoff, if ugly, so do not double report. -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 7/8] virtio-blk: dataplane cleanup 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi ` (5 preceding siblings ...) 2016-07-18 16:59 ` [Qemu-devel] [PULL 6/8] checkpatch: consider git extended headers valid patches Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 8/8] MAINTAINERS: Add include/block/aio.h to block I/O path section Stefan Hajnoczi 2016-07-19 8:01 ` [Qemu-devel] [PULL 0/8] Block patches Peter Maydell 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Cao jin, Stefan Hajnoczi, Kevin Wolf, Max Reitz From: Cao jin <caoj.fnst@cn.fujitsu.com> No need duplicate the judgment, there is one in function entry. Cc: Stefan Hajnoczi <stefanha@redhat.com> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Max Reitz <mreitz@redhat.com> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 1468814749-14510-1-git-send-email-caoj.fnst@cn.fujitsu.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- hw/block/dataplane/virtio-blk.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c index 54b9ac1..704a763 100644 --- a/hw/block/dataplane/virtio-blk.c +++ b/hw/block/dataplane/virtio-blk.c @@ -112,10 +112,8 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf, s->vdev = vdev; s->conf = conf; - if (conf->iothread) { - s->iothread = conf->iothread; - object_ref(OBJECT(s->iothread)); - } + s->iothread = conf->iothread; + object_ref(OBJECT(s->iothread)); s->ctx = iothread_get_aio_context(s->iothread); s->bh = aio_bh_new(s->ctx, notify_guest_bh, s); s->batch_notify_vqs = bitmap_new(conf->num_queues); -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 8/8] MAINTAINERS: Add include/block/aio.h to block I/O path section 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi ` (6 preceding siblings ...) 2016-07-18 16:59 ` [Qemu-devel] [PULL 7/8] virtio-blk: dataplane cleanup Stefan Hajnoczi @ 2016-07-18 16:59 ` Stefan Hajnoczi 2016-07-19 8:01 ` [Qemu-devel] [PULL 0/8] Block patches Peter Maydell 8 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2016-07-18 16:59 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Fam Zheng, Stefan Hajnoczi From: Fam Zheng <famz@redhat.com> This file is actually the header for async.c and aio-*.c., so add it to the same section. Suggested-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com> Message-id: 1468826387-10473-1-git-send-email-famz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 1d0e2c3..83e0f13 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1027,6 +1027,7 @@ F: async.c F: aio-*.c F: block/io.c F: migration/block* +F: include/block/aio.h T: git git://github.com/stefanha/qemu.git block Block Jobs -- 2.7.4 ^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi ` (7 preceding siblings ...) 2016-07-18 16:59 ` [Qemu-devel] [PULL 8/8] MAINTAINERS: Add include/block/aio.h to block I/O path section Stefan Hajnoczi @ 2016-07-19 8:01 ` Peter Maydell 8 siblings, 0 replies; 31+ messages in thread From: Peter Maydell @ 2016-07-19 8:01 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers On 18 July 2016 at 17:59, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 3913d3707e3debfbf0d2d014a1a793394993b088: > > Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.7-20160718' into staging (2016-07-18 11:24:15 +0100) > > are available in the git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to e1029ae26d96d5de78c2d9af5eddcea92e73a46a: > > MAINTAINERS: Add include/block/aio.h to block I/O path section (2016-07-18 15:10:52 +0100) > > ---------------------------------------------------------------- > > This is not quite a v2 because I have added more patches. "linux-aio: share > one LinuxAioState within an AioContext" is now fixed under mingw. > > ---------------------------------------------------------------- Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2019-06-21 13:23 Max Reitz 2019-06-23 17:18 ` Peter Maydell 0 siblings, 1 reply; 31+ messages in thread From: Max Reitz @ 2019-06-21 13:23 UTC (permalink / raw) To: qemu-block; +Cc: Kevin Wolf, Peter Maydell, qemu-devel, Max Reitz The following changes since commit 33d609990621dea6c7d056c86f707b8811320ac1: Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2019-06-18 17:00:52 +0100) are available in the Git repository at: https://github.com/XanClic/qemu.git tags/pull-block-2019-06-21 for you to fetch changes up to e2a76186f7948b8b75d1b2b52638de7c2f7f7472: iotests: Fix 205 for concurrent runs (2019-06-21 14:40:28 +0200) ---------------------------------------------------------------- Block patches: - The SSH block driver now uses libssh instead of libssh2 - The VMDK block driver gets read-only support for the seSparse subformat - Various fixes ---------------------------------------------------------------- Anton Nefedov (1): iotest 134: test cluster-misaligned encrypted write Klaus Birkelund Jensen (1): nvme: do not advertise support for unsupported arbitration mechanism Max Reitz (1): iotests: Fix 205 for concurrent runs Pino Toscano (1): ssh: switch from libssh2 to libssh Sam Eiderman (3): vmdk: Fix comment regarding max l1_size coverage vmdk: Reduce the max bound for L1 table size vmdk: Add read-only support for seSparse snapshots Vladimir Sementsov-Ogievskiy (1): blockdev: enable non-root nodes for transaction drive-backup source configure | 65 +- block/Makefile.objs | 6 +- block/ssh.c | 673 ++++++++++-------- block/vmdk.c | 372 +++++++++- blockdev.c | 2 +- hw/block/nvme.c | 1 - .travis.yml | 4 +- block/trace-events | 14 +- docs/qemu-block-drivers.texi | 2 +- .../dockerfiles/debian-win32-cross.docker | 1 - .../dockerfiles/debian-win64-cross.docker | 1 - tests/docker/dockerfiles/fedora.docker | 4 +- tests/docker/dockerfiles/ubuntu.docker | 2 +- tests/docker/dockerfiles/ubuntu1804.docker | 2 +- tests/qemu-iotests/059.out | 2 +- tests/qemu-iotests/134 | 9 + tests/qemu-iotests/134.out | 10 + tests/qemu-iotests/205 | 2 +- tests/qemu-iotests/207 | 54 +- tests/qemu-iotests/207.out | 2 +- 20 files changed, 844 insertions(+), 384 deletions(-) -- 2.21.0 ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2019-06-21 13:23 Max Reitz @ 2019-06-23 17:18 ` Peter Maydell 2019-06-24 12:20 ` Max Reitz 0 siblings, 1 reply; 31+ messages in thread From: Peter Maydell @ 2019-06-23 17:18 UTC (permalink / raw) To: Max Reitz; +Cc: Kevin Wolf, QEMU Developers, Qemu-block On Fri, 21 Jun 2019 at 14:23, Max Reitz <mreitz@redhat.com> wrote: > > The following changes since commit 33d609990621dea6c7d056c86f707b8811320ac1: > > Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2019-06-18 17:00:52 +0100) > > are available in the Git repository at: > > https://github.com/XanClic/qemu.git tags/pull-block-2019-06-21 > > for you to fetch changes up to e2a76186f7948b8b75d1b2b52638de7c2f7f7472: > > iotests: Fix 205 for concurrent runs (2019-06-21 14:40:28 +0200) > > ---------------------------------------------------------------- > Block patches: > - The SSH block driver now uses libssh instead of libssh2 > - The VMDK block driver gets read-only support for the seSparse > subformat > - Various fixes > Hi; this failed to build on my s390 box: /home/linux1/qemu/block/ssh.c: In function ‘check_host_key_knownhosts’: /home/linux1/qemu/block/ssh.c:367:27: error: implicit declaration of function ‘ssh_get_fingerprint_hash’ [-Werror=implicit-function-declaration] fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, ^ /home/linux1/qemu/block/ssh.c:367:13: error: nested extern declaration of ‘ssh_get_fingerprint_hash’ [-Werror=nested-externs] fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, ^ /home/linux1/qemu/block/ssh.c:367:25: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, ^ It looks like that function was introduced in libssh 0.8.3, and this box has 0.6.3. (configure has correctly not defined HAVE_LIBSSH_0_8 but this usage is inside a bit of code that's compiled even when that is not defined.) thanks -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2019-06-23 17:18 ` Peter Maydell @ 2019-06-24 12:20 ` Max Reitz 2019-06-24 13:15 ` Pino Toscano 0 siblings, 1 reply; 31+ messages in thread From: Max Reitz @ 2019-06-24 12:20 UTC (permalink / raw) To: Peter Maydell; +Cc: Kevin Wolf, QEMU Developers, Qemu-block, Pino Toscano [-- Attachment #1.1: Type: text/plain, Size: 2093 bytes --] On 23.06.19 19:18, Peter Maydell wrote: > On Fri, 21 Jun 2019 at 14:23, Max Reitz <mreitz@redhat.com> wrote: >> >> The following changes since commit 33d609990621dea6c7d056c86f707b8811320ac1: >> >> Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2019-06-18 17:00:52 +0100) >> >> are available in the Git repository at: >> >> https://github.com/XanClic/qemu.git tags/pull-block-2019-06-21 >> >> for you to fetch changes up to e2a76186f7948b8b75d1b2b52638de7c2f7f7472: >> >> iotests: Fix 205 for concurrent runs (2019-06-21 14:40:28 +0200) >> >> ---------------------------------------------------------------- >> Block patches: >> - The SSH block driver now uses libssh instead of libssh2 >> - The VMDK block driver gets read-only support for the seSparse >> subformat >> - Various fixes >> > > Hi; this failed to build on my s390 box: > > /home/linux1/qemu/block/ssh.c: In function ‘check_host_key_knownhosts’: > /home/linux1/qemu/block/ssh.c:367:27: error: implicit declaration of > function ‘ssh_get_fingerprint_hash’ > [-Werror=implicit-function-declaration] > fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, > ^ > /home/linux1/qemu/block/ssh.c:367:13: error: nested extern declaration > of ‘ssh_get_fingerprint_hash’ [-Werror=nested-externs] > fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, > ^ > /home/linux1/qemu/block/ssh.c:367:25: error: assignment makes pointer > from integer without a cast [-Werror=int-conversion] > fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, > ^ > > It looks like that function was introduced in libssh 0.8.3, and this box > has 0.6.3. (configure has correctly not defined HAVE_LIBSSH_0_8 > but this usage is inside a bit of code that's compiled even when > that is not defined.) Pino, would you be OK with dropping that piece of code for pre-0.8 and just replacing it with the else-error_setg()? Max [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2019-06-24 12:20 ` Max Reitz @ 2019-06-24 13:15 ` Pino Toscano 2019-06-24 14:49 ` Max Reitz 0 siblings, 1 reply; 31+ messages in thread From: Pino Toscano @ 2019-06-24 13:15 UTC (permalink / raw) To: Max Reitz; +Cc: Kevin Wolf, Peter Maydell, QEMU Developers, Qemu-block [-- Attachment #1.1: Type: text/plain, Size: 2519 bytes --] On Monday, 24 June 2019 14:20:11 CEST Max Reitz wrote: > On 23.06.19 19:18, Peter Maydell wrote: > > On Fri, 21 Jun 2019 at 14:23, Max Reitz <mreitz@redhat.com> wrote: > >> > >> The following changes since commit 33d609990621dea6c7d056c86f707b8811320ac1: > >> > >> Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2019-06-18 17:00:52 +0100) > >> > >> are available in the Git repository at: > >> > >> https://github.com/XanClic/qemu.git tags/pull-block-2019-06-21 > >> > >> for you to fetch changes up to e2a76186f7948b8b75d1b2b52638de7c2f7f7472: > >> > >> iotests: Fix 205 for concurrent runs (2019-06-21 14:40:28 +0200) > >> > >> ---------------------------------------------------------------- > >> Block patches: > >> - The SSH block driver now uses libssh instead of libssh2 > >> - The VMDK block driver gets read-only support for the seSparse > >> subformat > >> - Various fixes > >> > > > > Hi; this failed to build on my s390 box: > > > > /home/linux1/qemu/block/ssh.c: In function ‘check_host_key_knownhosts’: > > /home/linux1/qemu/block/ssh.c:367:27: error: implicit declaration of > > function ‘ssh_get_fingerprint_hash’ > > [-Werror=implicit-function-declaration] > > fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, > > ^ > > /home/linux1/qemu/block/ssh.c:367:13: error: nested extern declaration > > of ‘ssh_get_fingerprint_hash’ [-Werror=nested-externs] > > fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, > > ^ > > /home/linux1/qemu/block/ssh.c:367:25: error: assignment makes pointer > > from integer without a cast [-Werror=int-conversion] > > fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, > > ^ > > > > It looks like that function was introduced in libssh 0.8.3, and this box > > has 0.6.3. (configure has correctly not defined HAVE_LIBSSH_0_8 > > but this usage is inside a bit of code that's compiled even when > > that is not defined.) Oops, sorry, I did not test the latest versions with that old libssh. > Pino, would you be OK with dropping that piece of code for pre-0.8 and > just replacing it with the else-error_setg()? Some the variables in check_host_key_knownhosts must be moved within the HAVE_LIBSSH_0_8 block now; attached fixup patch, please squash with my patch (I can submit a v12, if needed/wanted). -- Pino Toscano [-- Attachment #1.2: fixup.diff --] [-- Type: text/x-patch, Size: 2209 bytes --] diff --git a/block/ssh.c b/block/ssh.c index 048d0cc924..501933b855 100644 --- a/block/ssh.c +++ b/block/ssh.c @@ -277,14 +277,14 @@ static void ssh_parse_filename(const char *filename, QDict *options, static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp) { int ret; +#ifdef HAVE_LIBSSH_0_8 + enum ssh_known_hosts_e state; int r; ssh_key pubkey; enum ssh_keytypes_e pubkey_type; unsigned char *server_hash = NULL; size_t server_hash_len; char *fingerprint = NULL; -#ifdef HAVE_LIBSSH_0_8 - enum ssh_known_hosts_e state; state = ssh_session_is_known_server(s->session); trace_ssh_server_status(state); @@ -356,30 +356,9 @@ static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp) break; case SSH_SERVER_KNOWN_CHANGED: ret = -EINVAL; - r = ssh_get_publickey(s->session, &pubkey); - if (r == 0) { - r = ssh_get_publickey_hash(pubkey, SSH_PUBLICKEY_HASH_SHA1, - &server_hash, &server_hash_len); - pubkey_type = ssh_key_type(pubkey); - ssh_key_free(pubkey); - } - if (r == 0) { - fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, - server_hash, - server_hash_len); - ssh_clean_pubkey_hash(&server_hash); - } - if (fingerprint) { - error_setg(errp, - "host key (%s key with fingerprint %s) does not match " - "the one in known_hosts; this may be a possible attack", - ssh_key_type_to_char(pubkey_type), fingerprint); - ssh_string_free_char(fingerprint); - } else { - error_setg(errp, - "host key does not match the one in known_hosts; this " - "may be a possible attack"); - } + error_setg(errp, + "host key does not match the one in known_hosts; this " + "may be a possible attack"); goto out; case SSH_SERVER_FOUND_OTHER: ret = -EINVAL; [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2019-06-24 13:15 ` Pino Toscano @ 2019-06-24 14:49 ` Max Reitz 0 siblings, 0 replies; 31+ messages in thread From: Max Reitz @ 2019-06-24 14:49 UTC (permalink / raw) To: Pino Toscano; +Cc: Kevin Wolf, Peter Maydell, QEMU Developers, Qemu-block [-- Attachment #1.1: Type: text/plain, Size: 2635 bytes --] On 24.06.19 15:15, Pino Toscano wrote: > On Monday, 24 June 2019 14:20:11 CEST Max Reitz wrote: >> On 23.06.19 19:18, Peter Maydell wrote: >>> On Fri, 21 Jun 2019 at 14:23, Max Reitz <mreitz@redhat.com> wrote: >>>> >>>> The following changes since commit 33d609990621dea6c7d056c86f707b8811320ac1: >>>> >>>> Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2019-06-18 17:00:52 +0100) >>>> >>>> are available in the Git repository at: >>>> >>>> https://github.com/XanClic/qemu.git tags/pull-block-2019-06-21 >>>> >>>> for you to fetch changes up to e2a76186f7948b8b75d1b2b52638de7c2f7f7472: >>>> >>>> iotests: Fix 205 for concurrent runs (2019-06-21 14:40:28 +0200) >>>> >>>> ---------------------------------------------------------------- >>>> Block patches: >>>> - The SSH block driver now uses libssh instead of libssh2 >>>> - The VMDK block driver gets read-only support for the seSparse >>>> subformat >>>> - Various fixes >>>> >>> >>> Hi; this failed to build on my s390 box: >>> >>> /home/linux1/qemu/block/ssh.c: In function ‘check_host_key_knownhosts’: >>> /home/linux1/qemu/block/ssh.c:367:27: error: implicit declaration of >>> function ‘ssh_get_fingerprint_hash’ >>> [-Werror=implicit-function-declaration] >>> fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, >>> ^ >>> /home/linux1/qemu/block/ssh.c:367:13: error: nested extern declaration >>> of ‘ssh_get_fingerprint_hash’ [-Werror=nested-externs] >>> fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, >>> ^ >>> /home/linux1/qemu/block/ssh.c:367:25: error: assignment makes pointer >>> from integer without a cast [-Werror=int-conversion] >>> fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA1, >>> ^ >>> >>> It looks like that function was introduced in libssh 0.8.3, and this box >>> has 0.6.3. (configure has correctly not defined HAVE_LIBSSH_0_8 >>> but this usage is inside a bit of code that's compiled even when >>> that is not defined.) > > Oops, sorry, I did not test the latest versions with that old libssh. > >> Pino, would you be OK with dropping that piece of code for pre-0.8 and >> just replacing it with the else-error_setg()? > > Some the variables in check_host_key_knownhosts must be moved within > the HAVE_LIBSSH_0_8 block now; attached fixup patch, please squash with > my patch (I can submit a v12, if needed/wanted). Thanks, I’ve squashed it in and sent a v2 for this pull request. Max [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2019-05-10 13:02 Stefan Hajnoczi 2019-05-10 14:24 ` Peter Maydell 0 siblings, 1 reply; 31+ messages in thread From: Stefan Hajnoczi @ 2019-05-10 13:02 UTC (permalink / raw) To: qemu-devel Cc: Fam Zheng, Peter Maydell, qemu-block, Max Reitz, Stefan Hajnoczi, Paolo Bonzini, Kevin Wolf The following changes since commit 812b835fb4d23dd108b2f9802158472d50b73579: Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-05-07' into staging (2019-05-09 16:31:12 +0100) are available in the Git repository at: https://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to e84125761f78919fe63616d9888ea45e72dc956f: docs: add Security chapter to the documentation (2019-05-10 10:53:52 +0100) ---------------------------------------------------------------- Pull request ---------------------------------------------------------------- Andrey Shinkevich (1): block/io.c: fix for the allocation failure Jules Irenge (3): util/readline: add a space to fix errors by checkpatch tool util: readline: replace tab indent by four spaces to fix checkpatch errors util/readline: Add braces to fix checkpatch errors Nikita Alekseev (1): block: Add coroutine_fn to bdrv_check_co_entry Paolo Bonzini (1): aio-posix: ensure poll mode is left when aio_notify is called Stefan Hajnoczi (2): docs: add Secure Coding Practices to developer docs docs: add Security chapter to the documentation Makefile | 2 +- block.c | 2 +- block/io.c | 2 +- util/aio-posix.c | 12 +- util/readline.c | 174 ++++++++++++++----------- docs/devel/index.rst | 1 + docs/devel/secure-coding-practices.rst | 106 +++++++++++++++ docs/security.texi | 131 +++++++++++++++++++ qemu-doc.texi | 3 + 9 files changed, 347 insertions(+), 86 deletions(-) create mode 100644 docs/devel/secure-coding-practices.rst create mode 100644 docs/security.texi -- 2.21.0 ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2019-05-10 13:02 Stefan Hajnoczi @ 2019-05-10 14:24 ` Peter Maydell 0 siblings, 0 replies; 31+ messages in thread From: Peter Maydell @ 2019-05-10 14:24 UTC (permalink / raw) To: Stefan Hajnoczi Cc: Fam Zheng, Kevin Wolf, Qemu-block, QEMU Developers, Max Reitz, Paolo Bonzini On Fri, 10 May 2019 at 14:02, Stefan Hajnoczi <stefanha@redhat.com> wrote: > > The following changes since commit 812b835fb4d23dd108b2f9802158472d50b73579: > > Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-05-07' into staging (2019-05-09 16:31:12 +0100) > > are available in the Git repository at: > > https://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to e84125761f78919fe63616d9888ea45e72dc956f: > > docs: add Security chapter to the documentation (2019-05-10 10:53:52 +0100) > > ---------------------------------------------------------------- > Pull request > > ---------------------------------------------------------------- Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/4.1 for any user-visible changes. -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2018-05-12 9:28 Stefan Hajnoczi 2018-05-12 9:42 ` no-reply ` (2 more replies) 0 siblings, 3 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2018-05-12 9:28 UTC (permalink / raw) To: qemu-devel; +Cc: qemu-block, Peter Maydell The following changes since commit e5cd695266c5709308aa95b1baae499e4b5d4544: Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging (2018-05-08 17:05:58 +0100) are available in the Git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to 31be8a2a97ecba7d31a82932286489cac318e9e9: block/file-posix: add x-check-page-cache=on|off option (2018-05-11 16:43:05 +0100) ---------------------------------------------------------------- Block pull request * Support -drive cache.direct=off live migration for POSIX files ---------------------------------------------------------------- Joe Perches (4): checkpatch: add a --strict check for utf-8 in commit logs checkpatch: ignore email headers better checkpatch: emit a warning on file add/move/delete checkpatch: reduce MAINTAINERS update message frequency Pasi Savanainen (1): checkpatch: check utf-8 content from a commit log when it's missing from charset Stefan Hajnoczi (3): blockjob: drop block_job_pause/resume_all() block/file-posix: implement bdrv_co_invalidate_cache() on Linux block/file-posix: add x-check-page-cache=on|off option qapi/block-core.json | 7 +- include/block/blockjob_int.h | 14 ---- block/file-posix.c | 146 ++++++++++++++++++++++++++++++++++- blockjob.c | 27 ------- scripts/checkpatch.pl | 56 +++++++++++++- 5 files changed, 202 insertions(+), 48 deletions(-) -- 2.17.0 ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2018-05-12 9:28 Stefan Hajnoczi @ 2018-05-12 9:42 ` no-reply 2018-05-14 13:15 ` Peter Maydell 2018-05-14 17:53 ` Peter Maydell 2 siblings, 0 replies; 31+ messages in thread From: no-reply @ 2018-05-12 9:42 UTC (permalink / raw) To: stefanha; +Cc: famz, qemu-devel, peter.maydell, qemu-block Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 20180512092824.13848-1-stefanha@redhat.com Subject: [Qemu-devel] [PULL 0/8] Block patches === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu * [new tag] patchew/20180512092824.13848-1-stefanha@redhat.com -> patchew/20180512092824.13848-1-stefanha@redhat.com t [tag update] patchew/cover.1526081108.git.alistair.francis@wdc.com -> patchew/cover.1526081108.git.alistair.francis@wdc.com Switched to a new branch 'test' a35067253e block/file-posix: add x-check-page-cache=on|off option c6c991d81f block/file-posix: implement bdrv_co_invalidate_cache() on Linux 3b9d04939d checkpatch: reduce MAINTAINERS update message frequency 92c27dd7e6 checkpatch: emit a warning on file add/move/delete 82e1381f3f checkpatch: ignore email headers better 63d8deac11 checkpatch: check utf-8 content from a commit log when it's missing from charset 7ecaae4f83 checkpatch: add a --strict check for utf-8 in commit logs ca525fa2f4 blockjob: drop block_job_pause/resume_all() === OUTPUT BEGIN === Checking PATCH 1/8: blockjob: drop block_job_pause/resume_all()... Checking PATCH 2/8: checkpatch: add a --strict check for utf-8 in commit logs... WARNING: line over 80 characters #109: FILE: scripts/checkpatch.pl:1420: + WARN("8-bit UTF-8 used in possible commit log\n" . $herecurr); total: 0 errors, 1 warnings, 66 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. Checking PATCH 3/8: checkpatch: check utf-8 content from a commit log when it's missing from charset... Checking PATCH 4/8: checkpatch: ignore email headers better... Checking PATCH 5/8: checkpatch: emit a warning on file add/move/delete... WARNING: line over 80 characters #51: FILE: scripts/checkpatch.pl:1397: + ($line =~ /\{\s*([\w\/\.\-]*)\s*\=\>\s*([\w\/\.\-]*)\s*\}/ && ERROR: line over 90 characters #54: FILE: scripts/checkpatch.pl:1400: + WARN("added, moved or deleted file(s), does MAINTAINERS need updating?\n" . $herecurr); total: 1 errors, 1 warnings, 24 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. Checking PATCH 6/8: checkpatch: reduce MAINTAINERS update message frequency... Checking PATCH 7/8: block/file-posix: implement bdrv_co_invalidate_cache() on Linux... WARNING: architecture specific defines should be avoided #52: FILE: block/file-posix.c:2255: +#if defined(__linux__) total: 0 errors, 1 warnings, 70 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. Checking PATCH 8/8: block/file-posix: add x-check-page-cache=on|off option... WARNING: line over 80 characters #47: FILE: block/file-posix.c:423: + .help = "check that page cache was dropped on live migration (default: off)" WARNING: architecture specific defines should be avoided #120: FILE: block/file-posix.c:2264: +#if defined(__linux__) total: 0 errors, 2 warnings, 185 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@redhat.com ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2018-05-12 9:28 Stefan Hajnoczi 2018-05-12 9:42 ` no-reply @ 2018-05-14 13:15 ` Peter Maydell 2018-05-14 16:02 ` Peter Maydell 2018-05-14 17:53 ` Peter Maydell 2 siblings, 1 reply; 31+ messages in thread From: Peter Maydell @ 2018-05-14 13:15 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers, Qemu-block On 12 May 2018 at 10:28, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit e5cd695266c5709308aa95b1baae499e4b5d4544: > > Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging (2018-05-08 17:05:58 +0100) > > are available in the Git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 31be8a2a97ecba7d31a82932286489cac318e9e9: > > block/file-posix: add x-check-page-cache=on|off option (2018-05-11 16:43:05 +0100) > > ---------------------------------------------------------------- > Block pull request > > * Support -drive cache.direct=off live migration for POSIX files > > ---------------------------------------------------------------- With this I get test failures for x86-64 Linux host (debug enabled): MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} gtester -k --verbose -m=quick tests/test-replication TEST: tests/test-replication... (pid=15016) /replication/primary/read: OK /replication/primary/write: OK /replication/primary/start: OK /replication/primary/stop: OK /replication/primary/do_checkpoint: OK /replication/primary/get_error_all: OK /replication/secondary/read: ** ERROR:/home/petmay01/linaro/qemu-for-merges/tests/test-replication.c:119:test_blk_write: assertion failed: (async_ret == 0) FAIL GTester: last random seed: R02Sf99d81651223b2fcdd0d7d601245eba3 (pid=15131) /replication/secondary/write: OK /replication/secondary/start: ** ERROR:/home/petmay01/linaro/qemu-for-merges/tests/test-replication.c:119:test_blk_write: assertion failed: (async_ret == 0) FAIL GTester: last random seed: R02S3e753c59c58d385aa2ea07c974c2e384 (pid=15309) /replication/secondary/stop: ** ERROR:/home/petmay01/linaro/qemu-for-merges/tests/test-replication.c:119:test_blk_write: assertion failed: (async_ret == 0) FAIL GTester: last random seed: R02Sb6a8459edfa78efa369da3920846afa7 (pid=15439) /replication/secondary/do_checkpoint: ** ERROR:/home/petmay01/linaro/qemu-for-merges/tests/test-replication.c:119:test_blk_write: assertion failed: (async_ret == 0) FAIL GTester: last random seed: R02S4b2e6aa4e33bba4c5bdea0b9073ee966 (pid=15580) /replication/secondary/get_error_all: OK FAIL: tests/test-replication /home/petmay01/linaro/qemu-for-merges/tests/Makefile.include:892: recipe for target 'check-tests/test-replication' failed thanks -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2018-05-14 13:15 ` Peter Maydell @ 2018-05-14 16:02 ` Peter Maydell 0 siblings, 0 replies; 31+ messages in thread From: Peter Maydell @ 2018-05-14 16:02 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers, Qemu-block On 14 May 2018 at 14:15, Peter Maydell <peter.maydell@linaro.org> wrote: > On 12 May 2018 at 10:28, Stefan Hajnoczi <stefanha@redhat.com> wrote: >> The following changes since commit e5cd695266c5709308aa95b1baae499e4b5d4544: >> >> Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging (2018-05-08 17:05:58 +0100) >> >> are available in the Git repository at: >> >> git://github.com/stefanha/qemu.git tags/block-pull-request >> >> for you to fetch changes up to 31be8a2a97ecba7d31a82932286489cac318e9e9: >> >> block/file-posix: add x-check-page-cache=on|off option (2018-05-11 16:43:05 +0100) >> >> ---------------------------------------------------------------- >> Block pull request >> >> * Support -drive cache.direct=off live migration for POSIX files >> >> ---------------------------------------------------------------- > > With this I get test failures for x86-64 Linux host (debug enabled): > > MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} > gtester -k --verbose -m=quick tests/test-replication > TEST: tests/test-replication... (pid=15016) > /replication/primary/read: OK > /replication/primary/write: OK > /replication/primary/start: OK > /replication/primary/stop: OK > /replication/primary/do_checkpoint: OK > /replication/primary/get_error_all: OK > /replication/secondary/read: ** > ERROR:/home/petmay01/linaro/qemu-for-merges/tests/test-replication.c:119:test_blk_write: > assertion failed: (async_ret == 0) > FAIL > GTester: last random seed: R02Sf99d81651223b2fcdd0d7d601245eba3 > (pid=15131) > /replication/secondary/write: OK > /replication/secondary/start: ** > ERROR:/home/petmay01/linaro/qemu-for-merges/tests/test-replication.c:119:test_blk_write: > assertion failed: (async_ret == 0) > FAIL Sorry, this is a false alarm -- this test fails in this obscure way if the system has run out of disk space and the write returns ENOSPC. Ideally we should fix the test to print the errno. In the meantime I've deleted some large log files and will retest the pull :-) thanks -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2018-05-12 9:28 Stefan Hajnoczi 2018-05-12 9:42 ` no-reply 2018-05-14 13:15 ` Peter Maydell @ 2018-05-14 17:53 ` Peter Maydell 2 siblings, 0 replies; 31+ messages in thread From: Peter Maydell @ 2018-05-14 17:53 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers, Qemu-block On 12 May 2018 at 10:28, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit e5cd695266c5709308aa95b1baae499e4b5d4544: > > Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging (2018-05-08 17:05:58 +0100) > > are available in the Git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 31be8a2a97ecba7d31a82932286489cac318e9e9: > > block/file-posix: add x-check-page-cache=on|off option (2018-05-11 16:43:05 +0100) > > ---------------------------------------------------------------- > Block pull request > > * Support -drive cache.direct=off live migration for POSIX files > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2014-01-31 21:19 Stefan Hajnoczi 2014-02-05 16:38 ` Peter Maydell 0 siblings, 1 reply; 31+ messages in thread From: Stefan Hajnoczi @ 2014-01-31 21:19 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Anthony Liguori The following changes since commit 89e4a51ca9546a7bbe1998c4e3d4a3ac3a0c19be: Merge remote-tracking branch 'stefanha/tags/tracing-pull-request' into staging (2014-01-31 11:13:08 +0000) are available in the git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to 1b7650ef2f63d53cf89af25a9f323323cf2423a7: qemu-iotests: only run 071 on qcow2 (2014-01-31 22:05:03 +0100) ---------------------------------------------------------------- Block pull request ---------------------------------------------------------------- Daniel P. Berrange (1): Describe flaws in qcow/qcow2 encryption in the docs Fam Zheng (1): qemu-iotests: Drop assert_no_active_commit in case 040 Jeff Cody (2): block: remove QED .bdrv_make_empty implementation block: remove qcow2 .bdrv_make_empty implementation Markus Armbruster (2): block/vhdx: Error checking fixes dataplane: Comment fix Peter Lieven (1): block/vmdk: add basic .bdrv_check support Stefan Hajnoczi (1): qemu-iotests: only run 071 on qcow2 block/qcow2.c | 21 ------------------ block/qed.c | 6 ------ block/vhdx-log.c | 4 ++-- block/vhdx.c | 8 +++---- block/vmdk.c | 48 +++++++++++++++++++++++++++++++++++++++++ hw/block/dataplane/virtio-blk.c | 2 +- qemu-doc.texi | 23 +++++++++++++++++--- qemu-img.texi | 23 +++++++++++++++++--- tests/qemu-iotests/040 | 28 +++++++++++------------- tests/qemu-iotests/071 | 2 +- 10 files changed, 108 insertions(+), 57 deletions(-) -- 1.8.5.3 ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2014-01-31 21:19 Stefan Hajnoczi @ 2014-02-05 16:38 ` Peter Maydell 0 siblings, 0 replies; 31+ messages in thread From: Peter Maydell @ 2014-02-05 16:38 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers, Anthony Liguori On 31 January 2014 21:19, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 89e4a51ca9546a7bbe1998c4e3d4a3ac3a0c19be: > > Merge remote-tracking branch 'stefanha/tags/tracing-pull-request' into staging (2014-01-31 11:13:08 +0000) > > are available in the git repository at: > > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 1b7650ef2f63d53cf89af25a9f323323cf2423a7: > > qemu-iotests: only run 071 on qcow2 (2014-01-31 22:05:03 +0100) Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2013-10-07 11:28 Stefan Hajnoczi 0 siblings, 0 replies; 31+ messages in thread From: Stefan Hajnoczi @ 2013-10-07 11:28 UTC (permalink / raw) To: qemu-devel; +Cc: Stefan Hajnoczi, Anthony Liguori The following changes since commit a684f3cf9b9b9c3cb82be87aafc463de8974610c: Merge remote-tracking branch 'kraxel/seabios-1.7.3.2' into staging (2013-09-30 17:15:27 -0500) are available in the git repository at: git://github.com/stefanha/qemu.git block for you to fetch changes up to d4cea8dfb99153803164915c7a1109549ad3da9c: block: use correct filename (2013-10-07 13:23:19 +0200) ---------------------------------------------------------------- Dunrong Huang (2): block: use correct filename for error report block: use correct filename Jeff Cody (1): block: vhdx - add migration blocker Max Reitz (5): qcow2: Correct endianness in overlap check qcow2: CHECK_OFLAG_COPIED is obsolete qcow2: Switch L1 table in a single sequence qcow2: Free allocated L2 cluster on error qemu-iotests: Correct 026 output block.c | 8 ++++---- block/qcow2-cluster.c | 11 +++++++++-- block/qcow2-refcount.c | 8 +++----- block/vhdx.c | 10 ++++++++++ tests/qemu-iotests/026.out | 32 ++++++++------------------------ tests/qemu-iotests/026.out.nocache | 32 ++++++++------------------------ 6 files changed, 42 insertions(+), 59 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2013-07-15 11:16 Kevin Wolf 0 siblings, 0 replies; 31+ messages in thread From: Kevin Wolf @ 2013-07-15 11:16 UTC (permalink / raw) To: anthony; +Cc: kwolf, qemu-devel The following changes since commit c3cb8e77804313e1be99b5f28a34a346736707a5: ioport: remove LITTLE_ENDIAN mark for portio (2013-07-12 14:37:47 -0500) are available in the git repository at: git://repo.or.cz/qemu/kevin.git for-anthony for you to fetch changes up to a62eaa26c1d6d48fbdc3ac1d32bd1314f5fdc8c9: ahci: Fix FLUSH command (2013-07-15 11:53:55 +0200) ---------------------------------------------------------------- Kevin Wolf (6): block: Don't parse protocol from file.filename qemu-iotests: Update 051 reference output block: Add return value for bdrv_flush_all() cpus: Add return value for vm_stop() migration: Fail migration on bdrv_flush_all() error ahci: Fix FLUSH command Stefan Hajnoczi (2): blockdev: add sync mode to drive-backup QMP command block: add drive_backup HMP command block.c | 27 ++++++--- block/sheepdog.c | 2 +- blockdev.c | 6 ++ cpus.c | 20 ++++--- hmp-commands.hx | 20 +++++++ hmp.c | 28 +++++++++ hmp.h | 1 + hw/ide/ahci.c | 8 ++- hw/ide/core.c | 9 +++ hw/ide/internal.h | 1 + include/block/block.h | 5 +- include/sysemu/sysemu.h | 4 +- migration.c | 17 +++++- qapi-schema.json | 7 ++- qemu-img.c | 4 +- qmp-commands.hx | 6 +- stubs/vm-stop.c | 2 +- tests/qemu-iotests/051 | 12 ++++ tests/qemu-iotests/051.out | 121 ++++++++++++++++++++++++++++----------- tests/qemu-iotests/055 | 36 +++++++----- tests/qemu-iotests/common.filter | 2 +- 21 files changed, 262 insertions(+), 76 deletions(-) ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2013-04-05 13:28 Kevin Wolf 0 siblings, 0 replies; 31+ messages in thread From: Kevin Wolf @ 2013-04-05 13:28 UTC (permalink / raw) To: anthony; +Cc: kwolf, qemu-devel The following changes since commit 162cbbd1736de2bca43fdefa7e98c54a361ee60d: Merge remote-tracking branch 'luiz/queue/qmp' into staging (2013-04-02 14:07:35 -0500) are available in the git repository at: git://repo.or.cz/qemu/kevin.git for-anthony for you to fetch changes up to 094e751448359417c712ed1395d151c79ccd2538: qcow2: Fix L1 write error handling in qcow2_update_snapshot_refcount (2013-04-05 13:17:49 +0200) ---------------------------------------------------------------- KONRAD Frederic (1): virtio-blk-x: fix configuration synchronization. Kevin Wolf (3): usb-storage: Forward serial number to scsi-disk qcow2: Return real error in qcow2_update_snapshot_refcount qcow2: Fix L1 write error handling in qcow2_update_snapshot_refcount Stefan Hajnoczi (4): block: fix I/O throttling accounting blind spot block: keep I/O throttling slice time constant block: drop duplicated slice extension code block: clean up I/O throttling wait_time code block.c | 49 +++++++++++++++++++++------------------------- block/qcow2-refcount.c | 25 +++++++++++------------ blockdev.c | 1 - hw/pci/pci-hotplug.c | 2 +- hw/s390x/s390-virtio-bus.c | 4 ++-- hw/s390x/s390-virtio-bus.h | 1 - hw/s390x/virtio-ccw.c | 4 ++-- hw/s390x/virtio-ccw.h | 1 - hw/scsi-bus.c | 8 ++++++-- hw/scsi.h | 3 ++- hw/usb/dev-storage.c | 2 +- hw/virtio-blk.c | 7 ------- hw/virtio-blk.h | 2 -- hw/virtio-pci.c | 7 ++++--- hw/virtio-pci.h | 1 - include/block/block_int.h | 3 +-- 16 files changed, 54 insertions(+), 66 deletions(-) ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2011-07-06 14:21 Kevin Wolf 2011-07-12 9:14 ` Kevin Wolf 2011-07-12 13:16 ` Anthony Liguori 0 siblings, 2 replies; 31+ messages in thread From: Kevin Wolf @ 2011-07-06 14:21 UTC (permalink / raw) To: anthony; +Cc: kwolf, qemu-devel The following changes since commit 9312805d33e8b106bae356d13a8071fb37d75554: pxa2xx_lcd: add proper rotation support (2011-07-04 22:12:21 +0200) are available in the git repository at: git://repo.or.cz/qemu/kevin.git for-anthony Federico Simoncelli (1): qemu-img: Add cache command line option Johannes Stezenbach (1): block/raw-posix: Linux compat-ioctl warning workaround Kevin Wolf (3): Documentation: Remove outdated host_device note ide: Ignore reads during PIO in and writes during PIO out ide: Initialise buffers with zeros Luiz Capitulino (2): block: drive_init(): Simplify interface type setting block: drive_init(): Improve CHS setting error message Markus Armbruster (1): virtio-blk: Turn drive serial into a qdev property block/raw-posix.c | 14 +++++++++ blockdev.c | 14 +++----- hw/ide/core.c | 50 +++++++++++++++++++++++++----- hw/s390-virtio-bus.c | 4 ++- hw/s390-virtio-bus.h | 1 + hw/virtio-blk.c | 29 ++++++++++++------ hw/virtio-blk.h | 2 + hw/virtio-pci.c | 4 ++- hw/virtio-pci.h | 1 + hw/virtio.h | 3 +- qemu-img-cmds.hx | 6 ++-- qemu-img.c | 80 +++++++++++++++++++++++++++++++++++++++++-------- qemu-img.texi | 6 ---- 13 files changed, 161 insertions(+), 53 deletions(-) ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2011-07-06 14:21 Kevin Wolf @ 2011-07-12 9:14 ` Kevin Wolf 2011-07-12 13:16 ` Anthony Liguori 1 sibling, 0 replies; 31+ messages in thread From: Kevin Wolf @ 2011-07-12 9:14 UTC (permalink / raw) To: Kevin Wolf; +Cc: qemu-devel Am 06.07.2011 16:21, schrieb Kevin Wolf: > The following changes since commit 9312805d33e8b106bae356d13a8071fb37d75554: > > pxa2xx_lcd: add proper rotation support (2011-07-04 22:12:21 +0200) > > are available in the git repository at: > git://repo.or.cz/qemu/kevin.git for-anthony > > Federico Simoncelli (1): > qemu-img: Add cache command line option > > Johannes Stezenbach (1): > block/raw-posix: Linux compat-ioctl warning workaround > > Kevin Wolf (3): > Documentation: Remove outdated host_device note > ide: Ignore reads during PIO in and writes during PIO out > ide: Initialise buffers with zeros > > Luiz Capitulino (2): > block: drive_init(): Simplify interface type setting > block: drive_init(): Improve CHS setting error message > > Markus Armbruster (1): > virtio-blk: Turn drive serial into a qdev property > > block/raw-posix.c | 14 +++++++++ > blockdev.c | 14 +++----- > hw/ide/core.c | 50 +++++++++++++++++++++++++----- > hw/s390-virtio-bus.c | 4 ++- > hw/s390-virtio-bus.h | 1 + > hw/virtio-blk.c | 29 ++++++++++++------ > hw/virtio-blk.h | 2 + > hw/virtio-pci.c | 4 ++- > hw/virtio-pci.h | 1 + > hw/virtio.h | 3 +- > qemu-img-cmds.hx | 6 ++-- > qemu-img.c | 80 +++++++++++++++++++++++++++++++++++++++++-------- > qemu-img.texi | 6 ---- > 13 files changed, 161 insertions(+), 53 deletions(-) Ping? ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] [PULL 0/8] Block patches 2011-07-06 14:21 Kevin Wolf 2011-07-12 9:14 ` Kevin Wolf @ 2011-07-12 13:16 ` Anthony Liguori 1 sibling, 0 replies; 31+ messages in thread From: Anthony Liguori @ 2011-07-12 13:16 UTC (permalink / raw) To: Kevin Wolf; +Cc: qemu-devel On 07/06/2011 09:21 AM, Kevin Wolf wrote: > The following changes since commit 9312805d33e8b106bae356d13a8071fb37d75554: > > pxa2xx_lcd: add proper rotation support (2011-07-04 22:12:21 +0200) Pulled. Thanks. Regards, Anthony Liguori > > are available in the git repository at: > git://repo.or.cz/qemu/kevin.git for-anthony > > Federico Simoncelli (1): > qemu-img: Add cache command line option > > Johannes Stezenbach (1): > block/raw-posix: Linux compat-ioctl warning workaround > > Kevin Wolf (3): > Documentation: Remove outdated host_device note > ide: Ignore reads during PIO in and writes during PIO out > ide: Initialise buffers with zeros > > Luiz Capitulino (2): > block: drive_init(): Simplify interface type setting > block: drive_init(): Improve CHS setting error message > > Markus Armbruster (1): > virtio-blk: Turn drive serial into a qdev property > > block/raw-posix.c | 14 +++++++++ > blockdev.c | 14 +++----- > hw/ide/core.c | 50 +++++++++++++++++++++++++----- > hw/s390-virtio-bus.c | 4 ++- > hw/s390-virtio-bus.h | 1 + > hw/virtio-blk.c | 29 ++++++++++++------ > hw/virtio-blk.h | 2 + > hw/virtio-pci.c | 4 ++- > hw/virtio-pci.h | 1 + > hw/virtio.h | 3 +- > qemu-img-cmds.hx | 6 ++-- > qemu-img.c | 80 +++++++++++++++++++++++++++++++++++++++++-------- > qemu-img.texi | 6 ---- > 13 files changed, 161 insertions(+), 53 deletions(-) > > ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] [PULL 0/8] Block patches @ 2010-05-20 13:10 Kevin Wolf 0 siblings, 0 replies; 31+ messages in thread From: Kevin Wolf @ 2010-05-20 13:10 UTC (permalink / raw) To: anthony; +Cc: kwolf, qemu-devel Hi Anthony, this bunch of patches contains some fixes that I think qualify for stable, especially the first two. Please cherry-pick them into stable-0.12 when you have pulled: 468f932 block: fix sector comparism in multiwrite_req_compare 49eb7b7 virtio-blk: fix barrier support 5fdf2a6 block: fix aio_flush segfaults for read-only protocols (e.g. curl) Kevin The following changes since commit 5a4bb580cdb10b066f9fd67658b31cac4a4ea5e5: Richard Henderson (1): target-sparc: Simplify ICC generation. are available in the git repository at: git://repo.or.cz/qemu/kevin.git for-anthony Avi Kivity (1): block: fix aio_flush segfaults for read-only protocols (e.g. curl) Christoph Hellwig (2): virtio-blk: fix barrier support block: fix sector comparism in multiwrite_req_compare Kevin Wolf (1): vvfat: More build fixes with DEBUG Nicholas Bellinger (2): block: Make find_image_format() return 'raw' BlockDriver for SG_IO devices block: Add SG_IO device check in refresh_total_sectors() Riccardo Magliocchetti (1): vvfat: Fix compilation with DEBUG defined Stefan Hajnoczi (1): virtio-blk: Avoid zeroing every request structure aio.c | 4 +++- block.c | 23 ++++++++++++++++++++++- block/vvfat.c | 10 +++++++--- hw/virtio-blk.c | 19 ++++++++++++++++--- 4 files changed, 48 insertions(+), 8 deletions(-) ^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2019-06-24 14:52 UTC | newest] Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-07-18 16:59 [Qemu-devel] [PULL 0/8] Block patches Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 1/8] spec/parallels: fix a mistake Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 2/8] linux-aio: share one LinuxAioState within an AioContext Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 3/8] aio_ctx_check: follow CODING_STYLE Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 4/8] linux-aio: prevent submitting more than MAX_EVENTS Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 5/8] aio-posix: remove useless parameter Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 6/8] checkpatch: consider git extended headers valid patches Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 7/8] virtio-blk: dataplane cleanup Stefan Hajnoczi 2016-07-18 16:59 ` [Qemu-devel] [PULL 8/8] MAINTAINERS: Add include/block/aio.h to block I/O path section Stefan Hajnoczi 2016-07-19 8:01 ` [Qemu-devel] [PULL 0/8] Block patches Peter Maydell -- strict thread matches above, loose matches on Subject: below -- 2019-06-21 13:23 Max Reitz 2019-06-23 17:18 ` Peter Maydell 2019-06-24 12:20 ` Max Reitz 2019-06-24 13:15 ` Pino Toscano 2019-06-24 14:49 ` Max Reitz 2019-05-10 13:02 Stefan Hajnoczi 2019-05-10 14:24 ` Peter Maydell 2018-05-12 9:28 Stefan Hajnoczi 2018-05-12 9:42 ` no-reply 2018-05-14 13:15 ` Peter Maydell 2018-05-14 16:02 ` Peter Maydell 2018-05-14 17:53 ` Peter Maydell 2014-01-31 21:19 Stefan Hajnoczi 2014-02-05 16:38 ` Peter Maydell 2013-10-07 11:28 Stefan Hajnoczi 2013-07-15 11:16 Kevin Wolf 2013-04-05 13:28 Kevin Wolf 2011-07-06 14:21 Kevin Wolf 2011-07-12 9:14 ` Kevin Wolf 2011-07-12 13:16 ` Anthony Liguori 2010-05-20 13:10 Kevin Wolf
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.