From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com
Subject: [Qemu-devel] [PULL for Kevin 00/19] Block job improvements part 1
Date: Fri, 28 Sep 2012 17:22:43 +0200 [thread overview]
Message-ID: <1348845782-15073-1-git-send-email-pbonzini@redhat.com> (raw)
Kevin,
the following changes since commit ac05f3492421caeb05809ffa02c6198ede179e43:
add a boot parameter to set reboot timeout (2012-09-25 20:05:04 -0500)
are available in the git repository at:
git://github.com/bonzini/qemu.git blkmirror-job-1.3-part1
for you to fetch changes up to ed306a929f16fda8a85561430b1ac370bde65097:
qemu-iotests: add tests for streaming error handling (2012-09-27 15:11:22 +0200)
This message has the diff from my post of Sep 25th. You reviewed 18 patches,
these are 19 because of the new "qmp: add 'busy' member to BlockJobInfo" patch.
----------------------------------------------------------------
Jeff Cody (1):
blockdev: rename block_stream_cb to a generic block_job_cb
Paolo Bonzini (18):
qerror/block: introduce QERR_BLOCK_JOB_NOT_ACTIVE
block: fix documentation of block_job_cancel_sync
block: move job APIs to separate files
block: add block_job_query
qmp: add 'busy' member to BlockJobInfo
block: add support for job pause/resume
qmp: add block-job-pause and block-job-resume
qemu-iotests: add test for pausing a streaming operation
block: rename block_job_complete to block_job_completed
iostatus: rename BlockErrorAction, BlockQMPEventAction
iostatus: move BlockdevOnError declaration to QAPI
iostatus: change is_read to a bool
iostatus: reorganize io error code
block: introduce block job error
stream: add on-error argument
blkdebug: process all set_state rules in the old state
qemu-iotests: map underscore to dash in QMP argument names
qemu-iotests: add tests for streaming error handling
Makefile.objs | 5 +-
QMP/qmp-events.txt | 22 ++++
block.c | 187 ++++++++----------------------
block.h | 20 ++--
block/Makefile.objs | 3 +-
block/blkdebug.c | 12 +-
block/stream.c | 33 +++++-
block_int.h | 162 ++------------------------
blockdev.c | 86 +++++++++-----
blockjob.c | 249 ++++++++++++++++++++++++++++++++++++++++
blockjob.h | 243 +++++++++++++++++++++++++++++++++++++++
hmp-commands.hx | 35 +++++-
hmp.c | 26 ++++-
hmp.h | 2 +
hw/fdc.c | 4 +-
hw/ide/core.c | 22 +---
hw/ide/pci.c | 4 +-
hw/scsi-disk.c | 25 ++--
hw/scsi-generic.c | 4 +-
hw/virtio-blk.c | 23 ++--
monitor.c | 1 +
monitor.h | 1 +
qapi-schema.json | 91 ++++++++++++++-
qemu-tool.c | 6 +
qerror.h | 6 +
qmp-commands.hx | 14 ++-
tests/qemu-iotests/030 | 260 +++++++++++++++++++++++++++++++++++++++++-
tests/qemu-iotests/030.out | 4 +-
tests/qemu-iotests/group | 2 +-
tests/qemu-iotests/iotests.py | 15 ++-
trace-events | 4 +-
31 file modificati, 1152 inserzioni(+), 419 rimozioni(-)
create mode 100644 blockjob.c
create mode 100644 blockjob.h
diff --git a/blockjob.c b/blockjob.c
index 5dd9c1e..b5c16f3 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -198,6 +198,7 @@ BlockJobInfo *block_job_query(BlockJob *job)
info->type = g_strdup(job->job_type->job_type);
info->device = g_strdup(bdrv_get_device_name(job->bs));
info->len = job->len;
+ info->busy = job->busy;
info->paused = job->paused;
info->offset = job->offset;
info->speed = job->speed;
diff --git a/blockjob.h b/blockjob.h
index 45cc03d..c2261a9 100644
--- a/blockjob.h
+++ b/blockjob.h
@@ -199,7 +199,8 @@ void block_job_resume(BlockJob *job);
* block_job_is_paused:
* @job: The job being queried.
*
- * Returns whether the job is currently paused.
+ * Returns whether the job is currently paused, or will pause
+ * as soon as it reaches a sleeping point.
*/
bool block_job_is_paused(BlockJob *job);
@@ -207,12 +208,10 @@ bool block_job_is_paused(BlockJob *job);
* block_job_cancel_sync:
* @job: The job to be canceled.
*
- * Synchronously cancel the job and wait for it to reach a quiescent
- * state. Note that the completion callback will still be called
- * asynchronously, hence it is *not* valid to call #bdrv_delete
- * immediately after #block_job_cancel_sync. Users of block jobs
- * will usually protect the BlockDriverState objects with a reference
- * count, should this be a concern.
+ * Synchronously cancel the job. The completion callback is called
+ * before the function returns. The job may actually complete
+ * instead of canceling itself; the circumstances under which this
+ * happens depend on the kind of job that is active.
*
* Returns the return value from the job if the job actually completed
* during the call, or -ECANCELED if it was canceled.
diff --git a/qapi-schema.json b/qapi-schema.json
index 8719a9d..d31ff0e 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1100,11 +1100,11 @@
# @ignore: ignore the error, only report a QMP event (BLOCK_IO_ERROR
# or BLOCK_JOB_ERROR)
#
+# @enospc: same as @stop on ENOSPC, same as @report otherwise.
+#
# @stop: for guest operations, stop the virtual machine;
# for jobs, pause the job
#
-# @enospc: same as @stop on ENOSPC, same as @report otherwise.
-#
# Since: 1.3
##
{ 'enum': 'BlockdevOnError',
@@ -1121,19 +1121,23 @@
#
# @len: the maximum progress value
#
-# @paused: whether the job is paused (since 1.2)
+# @busy: false if the job is known to be in a quiescent state, with
+# no pending I/O. Since 1.3.
+#
+# @paused: whether the job is paused or, if @busy is true, will
+# pause itself as soon as possible. Since 1.3.
#
# @offset: the current progress value
#
# @speed: the rate limit, bytes per second
#
-# @io-status: the status of the job (since 1.2)
+# @io-status: the status of the job (since 1.3)
#
# Since: 1.1
##
{ 'type': 'BlockJobInfo',
'data': {'type': 'str', 'device': 'str', 'len': 'int',
- 'offset': 'int', 'paused': 'bool', 'speed': 'int',
+ 'offset': 'int', 'busy': 'bool', 'paused': 'bool', 'speed': 'int',
'io-status': 'BlockDeviceIoStatus'} }
##
@@ -1833,7 +1837,7 @@
#
# @on-error: #optional the action to take on an error (default report).
# 'stop' and 'enospc' can only be used if the block device
-# supports io-status (see BlockInfo). Since 1.2.
+# supports io-status (see BlockInfo). Since 1.3.
#
# Returns: Nothing on success
# If @device does not exist, DeviceNotFound
@@ -1886,7 +1890,8 @@
#
# @device: the device name
#
-# @force: #optional whether to allow cancellation of a paused job (default false)
+# @force: #optional whether to allow cancellation of a paused job (default
+# false). Since 1.3.
#
# Returns: Nothing on success
# If no background operation is active on this device, DeviceNotActive
--
1.7.12
next reply other threads:[~2012-09-28 15:23 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-28 15:22 Paolo Bonzini [this message]
2012-09-28 15:22 ` [Qemu-devel] [PATCH 01/19] qerror/block: introduce QERR_BLOCK_JOB_NOT_ACTIVE Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 02/19] blockdev: rename block_stream_cb to a generic block_job_cb Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 03/19] block: fix documentation of block_job_cancel_sync Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 04/19] block: move job APIs to separate files Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 05/19] block: add block_job_query Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 06/19] qmp: add 'busy' member to BlockJobInfo Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 07/19] block: add support for job pause/resume Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 08/19] qmp: add block-job-pause and block-job-resume Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 09/19] qemu-iotests: add test for pausing a streaming operation Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 10/19] block: rename block_job_complete to block_job_completed Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 11/19] iostatus: rename BlockErrorAction, BlockQMPEventAction Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 12/19] iostatus: move BlockdevOnError declaration to QAPI Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 13/19] iostatus: change is_read to a bool Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 14/19] iostatus: reorganize io error code Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 15/19] block: introduce block job error Paolo Bonzini
2012-09-28 15:22 ` [Qemu-devel] [PATCH 16/19] stream: add on-error argument Paolo Bonzini
2012-09-28 15:23 ` [Qemu-devel] [PATCH 17/19] blkdebug: process all set_state rules in the old state Paolo Bonzini
2012-09-28 15:23 ` [Qemu-devel] [PATCH 18/19] qemu-iotests: map underscore to dash in QMP argument names Paolo Bonzini
2012-09-28 15:23 ` [Qemu-devel] [PATCH 19/19] qemu-iotests: add tests for streaming error handling Paolo Bonzini
2012-09-28 15:57 ` [Qemu-devel] [PULL for Kevin 00/19] Block job improvements part 1 Eric Blake
2012-09-28 18:23 ` Kevin Wolf
2012-10-01 13:37 ` Paolo Bonzini
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=1348845782-15073-1-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).