From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52258) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YfrDi-0005eV-PV for qemu-devel@nongnu.org; Wed, 08 Apr 2015 10:44:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YfrDb-0002u7-Pi for qemu-devel@nongnu.org; Wed, 08 Apr 2015 10:44:46 -0400 From: Alberto Garcia Date: Wed, 8 Apr 2015 17:43:34 +0300 Message-Id: Subject: [Qemu-devel] [PATCH v3 0/6] Support streaming to an intermediate layer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Stefan Hajnoczi There's only one change in this series: there's now a list of block jobs that is updated everytime a new one is created or destroyed. This way we can iterate the list directly, rather than searching all BlockDriverStates for the ones that own a block job. Otherwise please check the summary I wrote for the previous series, because the rest of the changes are detailed there: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg04798.html v3: - Keep a list of block jobs and make qmp_query_block_jobs() iterate over it. v2: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg04798.html - The 'block-stream' command does not have a 'node-name' parameter anymore and reuses 'device' for that purpose. - Block jobs can now be owned by any intermediate node, and not just by the ones at the root. query-block-jobs is updated to reflect that change. - The 'device' parameter of all 'block-job-*' commands can now take a node name. - The BlockJobInfo type and all BLOCK_JOB_* events report the node name in the 'device' field if the node does not have a device name. - All intermediate nodes are blocked (and checked for blockers) during the streaming operation. Regards, Berto Alberto Garcia (6): block: keep a list of block jobs block: allow block jobs in any arbitrary node block: never cancel a streaming job without running stream_complete() block: Support streaming to an intermediate layer block: Add QMP support for streaming to an intermediate layer docs: Document how to stream to an intermediate layer block.c | 4 +++- block/mirror.c | 5 +++-- block/stream.c | 47 ++++++++++++++++++++++++++++++++++++----- blockdev.c | 53 ++++++++++++++++++++++------------------------- blockjob.c | 30 ++++++++++++++++++++------- docs/live-block-ops.txt | 32 +++++++++++++++++----------- docs/qmp/qmp-events.txt | 8 +++---- include/block/blockjob.h | 14 +++++++++++++ include/qapi/qmp/qerror.h | 3 --- qapi/block-core.json | 28 ++++++++++++++----------- 10 files changed, 149 insertions(+), 75 deletions(-) -- 2.1.4