qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] d4fce1: blockjobs: fix set-speed kick


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] d4fce1: blockjobs: fix set-speed kick
Date: Mon, 19 Mar 2018 06:03:13 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: d4fce188448a273306b0c1c915e7bd91d6f83a6e
      
https://github.com/qemu/qemu/commit/d4fce188448a273306b0c1c915e7bd91d6f83a6e
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c

  Log Message:
  -----------
  blockjobs: fix set-speed kick

If speed is '0' it's not actually "less than" the previous speed.
Kick the job in this case too.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 75859b9420906f72c1c6d6273481ff30c141dbd5
      
https://github.com/qemu/qemu/commit/75859b9420906f72c1c6d6273481ff30c141dbd5
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/backup.c
    M block/commit.c
    M block/mirror.c
    M block/stream.c
    M blockjob.c
    M include/block/blockjob.h
    M include/block/blockjob_int.h
    M tests/test-bdrv-drain.c
    M tests/test-blockjob-txn.c
    M tests/test-blockjob.c

  Log Message:
  -----------
  blockjobs: model single jobs as transactions

model all independent jobs as single job transactions.

It's one less case we have to worry about when we add more states to the
transition machine. This way, we can just treat all job lifetimes exactly
the same. This helps tighten assertions of the STM graph and removes some
conditionals that would have been needed in the coming commits adding a
more explicit job lifetime management API.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 62bfdf0ca1228c4af765388fb248c0e6db1d2a12
      
https://github.com/qemu/qemu/commit/62bfdf0ca1228c4af765388fb248c0e6db1d2a12
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M include/block/blockjob.h
    M include/block/blockjob_int.h

  Log Message:
  -----------
  Blockjobs: documentation touchup

Trivial; Document what the job creation flags do,
and some general tidying.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 58b295ba52c97a8d9e8cb526961a43b701dd2730
      
https://github.com/qemu/qemu/commit/58b295ba52c97a8d9e8cb526961a43b701dd2730
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M include/block/blockjob.h
    M qapi/block-core.json
    M tests/qemu-iotests/109.out

  Log Message:
  -----------
  blockjobs: add status enum

We're about to add several new states, and booleans are becoming
unwieldly and difficult to reason about. It would help to have a
more explicit bookkeeping of the state of blockjobs. To this end,
add a new "status" field and add our existing states in a redundant
manner alongside the bools they are replacing:

UNDEFINED: Placeholder, default state. Not currently visible to QMP
     unless changes occur in the future to allow creating jobs
     without starting them via QMP.
CREATED:   replaces !!job->co && paused && !busy
RUNNING:   replaces effectively (!paused && busy)
PAUSED:    Nearly redundant with info->paused, which shows pause_count.
     This reports the actual status of the job, which almost always
     matches the paused request status. It differs in that it is
     strictly only true when the job has actually gone dormant.
READY:     replaces job->ready.
STANDBY:   Paused, but job->ready is true.

New state additions in coming commits will not be quite so redundant:

WAITING:   Waiting on transaction. This job has finished all the work
     it can until the transaction converges, fails, or is canceled.
PENDING:   Pending authorization from user. This job has finished all the
     work it can until the job or transaction is finalized via
     block_job_finalize. This implies the transaction has converged
     and left the WAITING phase.
ABORTING:  Job has encountered an error condition and is in the process
     of aborting.
CONCLUDED: Job has ceased all operations and has a return code available
     for query and may be dismissed via block_job_dismiss.
NULL:      Job has been dismissed and (should) be destroyed. Should never
     be visible to QMP.

Some of these states appear somewhat superfluous, but it helps define the
expected flow of a job; so some of the states wind up being synchronous
empty transitions. Importantly, jobs can be in only one of these states
at any given time, which helps code and external users alike reason about
the current condition of a job unambiguously.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: c9de40505f257a325e76f630c203432c77795461
      
https://github.com/qemu/qemu/commit/c9de40505f257a325e76f630c203432c77795461
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/trace-events
    M blockjob.c

  Log Message:
  -----------
  blockjobs: add state transition table

The state transition table has mostly been implied. We're about to make
it a bit more complex, so let's make the STM explicit instead.

Perform state transitions with a function that for now just asserts the
transition is appropriate.

Transitions:
Undefined -> Created: During job initialization.
Created   -> Running: Once the job is started.
                Jobs cannot transition from "Created" to "Paused"
                directly, but will instead synchronously transition
                to running to paused immediately.
Running   -> Paused:  Normal workflow for pauses.
Running   -> Ready:   Normal workflow for jobs reaching their sync point.
                (e.g. mirror)
Ready     -> Standby: Normal workflow for pausing ready jobs.
Paused    -> Running: Normal resume.
Standby   -> Ready:   Resume of a Standby job.

+---------+
|UNDEFINED|
+--+------+
   |
+--v----+
|CREATED|
+--+----+
   |
+--v----+     +------+
|RUNNING<----->PAUSED|
+--+----+     +------+
   |
+--v--+       +-------+
|READY<------->STANDBY|
+-----+       +-------+

Notably, there is no state presently defined as of this commit that
deals with a job after the "running" or "ready" states, so this table
will be adjusted alongside the commits that introduce those states.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: f03d9d243f4639fa19c8909078988790e5c08c03
      
https://github.com/qemu/qemu/commit/f03d9d243f4639fa19c8909078988790e5c08c03
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/qemu-iotests/030
    M tests/qemu-iotests/055
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests: add pause_wait

Split out the pause command into the actual pause and the wait.
Not every usage presently needs to resubmit a pause request.

The intent with the next commit will be to explicitly disallow
redundant or meaningless pause/resume requests, so the tests
need to become more judicious to reflect that.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 0ec4dfb8d60d0fe9872b3bdd00a1beeadd3de0de
      
https://github.com/qemu/qemu/commit/0ec4dfb8d60d0fe9872b3bdd00a1beeadd3de0de
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/trace-events
    M blockdev.c
    M blockjob.c
    M include/block/blockjob.h
    M qapi/block-core.json
    M tests/test-bdrv-drain.c

  Log Message:
  -----------
  blockjobs: add block_job_verb permission table

Which commands ("verbs") are appropriate for jobs in which state is
also somewhat burdensome to keep track of.

As of this commit, it looks rather useless, but begins to look more
interesting the more states we add to the STM table.

A recurring theme is that no verb will apply to an 'undefined' job.

Further, it's not presently possible to restrict the "pause" or "resume"
verbs any more than they are in this commit because of the asynchronous
nature of how jobs enter the PAUSED state; justifications for some
seemingly erroneous applications are given below.

=====
Verbs
=====

Cancel:    Any state except undefined.
Pause:     Any state except undefined;
     'created': Requests that the job pauses as it starts.
     'running': Normal usage. (PAUSED)
     'paused':  The job may be paused for internal reasons,
                but the user may wish to force an indefinite
                user-pause, so this is allowed.
     'ready':   Normal usage. (STANDBY)
     'standby': Same logic as above.
Resume:    Any state except undefined;
     'created': Will lift a user's pause-on-start request.
     'running': Will lift a pause request before it takes effect.
     'paused':  Normal usage.
     'ready':   Will lift a pause request before it takes effect.
     'standby': Normal usage.
Set-speed: Any state except undefined, though ready may not be meaningful.
Complete:  Only a 'ready' job may accept a complete request.

=======
Changes
=======

(1)

To facilitate "nice" error checking, all five major block-job verb
interfaces in blockjob.c now support an errp parameter:

- block_job_user_cancel is added as a new interface.
- block_job_user_pause gains an errp paramter
- block_job_user_resume gains an errp parameter
- block_job_set_speed already had an errp parameter.
- block_job_complete already had an errp parameter.

(2)

block-job-pause and block-job-resume will no longer no-op when trying
to pause an already paused job, or trying to resume a job that isn't
paused. These functions will now report that they did not perform the
action requested because it was not possible.

iotests have been adjusted to address this new behavior.

(3)

block-job-complete doesn't worry about checking !block_job_started,
because the permission table guards against this.

(4)

test-bdrv-drain's job implementation needs to announce that it is
'ready' now, in order to be completed.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 10a3fbb0f7c07dea4b964410d8be578bbc5902dc
      
https://github.com/qemu/qemu/commit/10a3fbb0f7c07dea4b964410d8be578bbc5902dc
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add ABORTING state

Add a new state ABORTING.

This makes transitions from normative states to error states explicit
in the STM, and serves as a disambiguation for which states may complete
normally when normal end-states (CONCLUDED) are added in future commits.

Notably, Paused/Standby jobs do not transition directly to aborting,
as they must wake up first and cooperate in their cancellation.

Transitions:
Created -> Aborting: can be cancelled (by the system)
Running -> Aborting: can be cancelled or encounter an error
Ready   -> Aborting: can be cancelled or encounter an error

Verbs:
None. The job must finish cleaning itself up and report its final status.
        +---------+
       |UNDEFINED|
       +--+------+
          |
       +--v----+
   +---------+CREATED|
   |         +--+----+
   |            |
   |         +--v----+     +------+
   +---------+RUNNING<----->PAUSED|
   |         +--+----+     +------+
   |            |
   |         +--v--+       +-------+
   +---------+READY<------->STANDBY|
   |         +-----+       +-------+
   |
+--v-----+
|ABORTING|
+--------+

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: e0cf03647aa6ba9f08f98d634d8fac46aec822fb
      
https://github.com/qemu/qemu/commit/e0cf03647aa6ba9f08f98d634d8fac46aec822fb
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add CONCLUDED state

add a new state "CONCLUDED" that identifies a job that has ceased all
operations. The wording was chosen to avoid any phrasing that might
imply success, error, or cancellation. The task has simply ceased all
operation and can never again perform any work.

("finished", "done", and "completed" might all imply success.)

Transitions:
Running  -> Concluded: normal completion
Ready    -> Concluded: normal completion
Aborting -> Concluded: error and cancellations

Verbs:
None as of this commit. (a future commit adds 'dismiss')
        +---------+
       |UNDEFINED|
       +--+------+
          |
       +--v----+
   +---------+CREATED|
   |         +--+----+
   |            |
   |         +--v----+     +------+
   +---------+RUNNING<----->PAUSED|
   |         +--+-+--+     +------+
   |            | |
   |            | +------------------+
   |            |                    |
   |         +--v--+       +-------+ |
   +---------+READY<------->STANDBY| |
   |         +--+--+       +-------+ |
   |            |                    |
+--v-----+   +--v------+             |
|ABORTING+--->CONCLUDED<-------------+
+--------+   +---------+

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 3925cd3bc7bdc82b7889fd97e7cad52dfee5e8a6
      
https://github.com/qemu/qemu/commit/3925cd3bc7bdc82b7889fd97e7cad52dfee5e8a6
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add NULL state

Add a new state that specifically demarcates when we begin to permanently
demolish a job after it has performed all work. This makes the transition
explicit in the STM table and highlights conditions under which a job may
be demolished.

Alongside this state, add a new helper command "block_job_decommission",
which transitions to the NULL state and puts down our implicit reference.
This separates instances in the code for "block_job_unref" which merely
undo a matching "block_job_ref" with instances intended to initiate the
full destruction of the object.

This decommission action also sets a number of fields to make sure that
block internals or external users that are holding a reference to a job
to see when it "finishes" are convinced that the job object is "done."
This is necessary, for instance, to do a block_job_cancel_sync on a
created object which will not make any progress.

Now, all jobs must go through block_job_decommission prior to being
freed, giving us start-to-finish state machine coverage for jobs.

Transitions:
Created   -> Null: Early failure event before the job is started
Concluded -> Null: Standard transition.

Verbs:
None. This should not ever be visible to the monitor.
        +---------+
       |UNDEFINED|
       +--+------+
          |
       +--v----+
   +---------+CREATED+------------------+
   |         +--+----+                  |
   |            |                       |
   |         +--v----+     +------+     |
   +---------+RUNNING<----->PAUSED|     |
   |         +--+-+--+     +------+     |
   |            | |                     |
   |            | +------------------+  |
   |            |                    |  |
   |         +--v--+       +-------+ |  |
   +---------+READY<------->STANDBY| |  |
   |         +--+--+       +-------+ |  |
   |            |                    |  |
+--v-----+   +--v------+             |  |
|ABORTING+--->CONCLUDED<-------------+  |
+--------+   +--+------+                |
          |                       |
       +--v-+                     |
       |NULL<---------------------+
       +----+

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 75f710599f2c35bad1a724d0243f372d05cc07ed
      
https://github.com/qemu/qemu/commit/75f710599f2c35bad1a724d0243f372d05cc07ed
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/trace-events
    M blockdev.c
    M blockjob.c
    M include/block/blockjob.h
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add block_job_dismiss

For jobs that have reached their CONCLUDED state, prior to having their
last reference put down (meaning jobs that have completed successfully,
unsuccessfully, or have been canceled), allow the user to dismiss the
job's lingering status report via block-job-dismiss.

This gives management APIs the chance to conclusively determine if a job
failed or succeeded, even if the event broadcast was missed.

Note: block_job_do_dismiss and block_job_decommission happen to do
exactly the same thing, but they're called from different semantic
contexts, so both aliases are kept to improve readability.

Note 2: Don't worry about the 0x04 flag definition for AUTO_DISMISS, she
has a friend coming in a future patch to fill the hole where 0x02 is.

Verbs:
Dismiss: operates on CONCLUDED jobs only.
Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 35d6b368f2fcc52de01773b80246bfbe55211903
      
https://github.com/qemu/qemu/commit/35d6b368f2fcc52de01773b80246bfbe55211903
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/backup.c
    M block/trace-events
    M blockjob.c

  Log Message:
  -----------
  blockjobs: ensure abort is called for cancelled jobs

Presently, even if a job is canceled post-completion as a result of
a failing peer in a transaction, it will still call .commit because
nothing has updated or changed its return code.

The reason why this does not cause problems currently is because
backup's implementation of .commit checks for cancellation itself.

I'd like to simplify this contract:

(1) Abort is called if the job/transaction fails
(2) Commit is called if the job/transaction succeeds

To this end: A job's return code, if 0, will be forcibly set as
-ECANCELED if that job has already concluded. Remove the now
redundant check in the backup job implementation.

We need to check for cancellation in both block_job_completed
AND block_job_completed_single, because jobs may be cancelled between
those two calls; for instance in transactions. This also necessitates
an ABORTING -> ABORTING transition to be allowed.

The check in block_job_completed could be removed, but there's no
point in starting to attempt to succeed a transaction that we know
in advance will fail.

This does NOT affect mirror jobs that are "canceled" during their
synchronous phase. The mirror job itself forcibly sets the canceled
property to false prior to ceding control, so such cases will invoke
the "commit" callback.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 43628d9336e832c07dc964433bdfaee44c49e5ac
      
https://github.com/qemu/qemu/commit/43628d9336e832c07dc964433bdfaee44c49e5ac
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c

  Log Message:
  -----------
  blockjobs: add commit, abort, clean helpers

The completed_single function is getting a little mucked up with
checking to see which callbacks exist, so let's factor them out.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: efe4d4b7b2f59bb8cdaa8651b832b8153ec24ce9
      
https://github.com/qemu/qemu/commit/efe4d4b7b2f59bb8cdaa8651b832b8153ec24ce9
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c

  Log Message:
  -----------
  blockjobs: add block_job_txn_apply function

Simply apply a function transaction-wide.
A few more uses of this in forthcoming patches.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 2da4617a5457a6542b0ff702caa983e78d6fe5d6
      
https://github.com/qemu/qemu/commit/2da4617a5457a6542b0ff702caa983e78d6fe5d6
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M include/block/blockjob_int.h

  Log Message:
  -----------
  blockjobs: add prepare callback

Some jobs upon finalization may need to perform some work that can
still fail. If these jobs are part of a transaction, it's important
that these callbacks fail the entire transaction.

We allow for a new callback in addition to commit/abort/clean that
allows us the opportunity to have fairly late-breaking failures
in the transactional process.

The expected flow is:

- All jobs in a transaction converge to the PENDING state,
  added in a forthcoming commit.
- Upon being finalized, either automatically or explicitly
  by the user, jobs prepare to complete.
- If any job fails preparation, all jobs call .abort.
- Otherwise, they succeed and call .commit.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: e8af5686ff6f63a81120f6b8e291f220475796ce
      
https://github.com/qemu/qemu/commit/e8af5686ff6f63a81120f6b8e291f220475796ce
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add waiting status

For jobs that are stuck waiting on others in a transaction, it would
be nice to know that they are no longer "running" in that sense, but
instead are waiting on other jobs in the transaction.

Jobs that are "waiting" in this sense cannot be meaningfully altered
any longer as they have left their running loop. The only meaningful
user verb for jobs in this state is "cancel," which will cancel the
whole transaction, too.

Transitions:
Running -> Waiting:   Normal transition.
Ready   -> Waiting:   Normal transition.
Waiting -> Aborting:  Transactional cancellation.
Waiting -> Concluded: Normal transition.

Removed Transitions:
Running -> Concluded: Jobs must go to WAITING first.
Ready   -> Concluded: Jobs must go to WAITING first.

Verbs:
Cancel: Can be applied to WAITING jobs.
        +---------+
       |UNDEFINED|
       +--+------+
          |
       +--v----+
   +---------+CREATED+-----------------+
   |         +--+----+                 |
   |            |                      |
   |         +--v----+     +------+    |
   +---------+RUNNING<----->PAUSED|    |
   |         +--+-+--+     +------+    |
   |            | |                    |
   |            | +------------------+ |
   |            |                    | |
   |         +--v--+       +-------+ | |
   +---------+READY<------->STANDBY| | |
   |         +--+--+       +-------+ | |
   |            |                    | |
   |         +--v----+               | |
   +---------+WAITING<---------------+ |
   |         +--+----+                 |
   |            |                      |
+--v-----+   +--v------+               |
|ABORTING+--->CONCLUDED|               |
+--------+   +--+------+               |
          |                      |
       +--v-+                    |
       |NULL<--------------------+
       +----+

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 5f241594c40875af526a53c7a8c6466e487f4e5e
      
https://github.com/qemu/qemu/commit/5f241594c40875af526a53c7a8c6466e487f4e5e
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockjob.c
    M include/block/blockjob.h
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add PENDING status and event

For jobs utilizing the new manual workflow, we intend to prohibit
them from modifying the block graph until the management layer provides
an explicit ACK via block-job-finalize to move the process forward.

To distinguish this runstate from "ready" or "waiting," we add a new
"pending" event and status.

For now, the transition from PENDING to CONCLUDED/ABORTING is automatic,
but a future commit will add the explicit block-job-finalize step.

Transitions:
Waiting -> Pending:   Normal transition.
Pending -> Concluded: Normal transition.
Pending -> Aborting:  Late transactional failures and cancellations.

Removed Transitions:
Waiting -> Concluded: Jobs must go to PENDING first.

Verbs:
Cancel: Can be applied to a pending job.
        +---------+
       |UNDEFINED|
       +--+------+
          |
       +--v----+
   +---------+CREATED+-----------------+
   |         +--+----+                 |
   |            |                      |
   |         +--+----+     +------+    |
   +---------+RUNNING<----->PAUSED|    |
   |         +--+-+--+     +------+    |
   |            | |                    |
   |            | +------------------+ |
   |            |                    | |
   |         +--v--+       +-------+ | |
   +---------+READY<------->STANDBY| | |
   |         +--+--+       +-------+ | |
   |            |                    | |
   |         +--v----+               | |
   +---------+WAITING<---------------+ |
   |         +--+----+                 |
   |            |                      |
   |         +--v----+                 |
   +---------+PENDING|                 |
   |         +--+----+                 |
   |            |                      |
+--v-----+   +--v------+               |
|ABORTING+--->CONCLUDED|               |
+--------+   +--+------+               |
          |                      |
       +--v-+                    |
       |NULL<--------------------+
       +----+

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 11b61fbc0d1a447849f36d76e0e1d05be2dfaad2
      
https://github.com/qemu/qemu/commit/11b61fbc0d1a447849f36d76e0e1d05be2dfaad2
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/trace-events
    M blockdev.c
    M blockjob.c
    M include/block/blockjob.h
    M qapi/block-core.json

  Log Message:
  -----------
  blockjobs: add block-job-finalize

Instead of automatically transitioning from PENDING to CONCLUDED, gate
the .prepare() and .commit() phases behind an explicit acknowledgement
provided by the QMP monitor if auto_finalize = false has been requested.

This allows us to perform graph changes in prepare and/or commit so that
graph changes do not occur autonomously without knowledge of the
controlling management layer.

Transactions that have reached the "PENDING" state together can all be
moved to invoke their finalization methods by issuing block_job_finalize
to any one job in the transaction.

Jobs in a transaction with mixed job->auto_finalize settings will all
remain stuck in the "PENDING" state, as if the entire transaction was
specified with auto_finalize = false. Jobs that specified
auto_finalize = true, however, will still not emit the PENDING event.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: b40dacdc7cd1c26739265cf59a35bac032d77bb1
      
https://github.com/qemu/qemu/commit/b40dacdc7cd1c26739265cf59a35bac032d77bb1
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M blockdev.c
    M blockjob.c
    M qapi/block-core.json
    M tests/qemu-iotests/109.out

  Log Message:
  -----------
  blockjobs: Expose manual property

Expose the "manual" property via QAPI for the backup-related jobs.
As of this commit, this allows the management API to request the
"concluded" and "dismiss" semantics for backup jobs.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 6d8be9676278ae41c79bfde820fbccbd021e5ac2
      
https://github.com/qemu/qemu/commit/6d8be9676278ae41c79bfde820fbccbd021e5ac2
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/qemu-iotests/056
    M tests/qemu-iotests/056.out

  Log Message:
  -----------
  iotests: test manual job dismissal

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: fb367e039fca2ac95a4e06dce22108f76cd4d232
      
https://github.com/qemu/qemu/commit/fb367e039fca2ac95a4e06dce22108f76cd4d232
  Author: John Snow <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/test-blockjob.c

  Log Message:
  -----------
  tests/test-blockjob: test cancellations

Whatever the state a blockjob is in, it should be able to be canceled
by the block layer.

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 3b5a1f6aa4a2878c47d9e8f9b835682cbab2f581
      
https://github.com/qemu/qemu/commit/3b5a1f6aa4a2878c47d9e8f9b835682cbab2f581
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/crypto.c

  Log Message:
  -----------
  luks: Separate image file creation from formatting

The crypto driver used to create the image file in a callback from the
crypto subsystem. If we want to implement .bdrv_co_create, this needs to
go away because that callback will get a reference to an already
existing block node.

Move the image file creation to block_crypto_create_generic().

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>
Reviewed-by: Eric Blake <address@hidden>


  Commit: 1ec4f4160a1a94cf3d13b43551fff2792bd5056e
      
https://github.com/qemu/qemu/commit/1ec4f4160a1a94cf3d13b43551fff2792bd5056e
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/crypto.c

  Log Message:
  -----------
  luks: Create block_crypto_co_create_generic()

Everything that refers to the protocol layer or QemuOpts is moved out of
block_crypto_create_generic(), so that the remaining function is
suitable to be called by a .bdrv_co_create implementation.

LUKS is the only driver that actually implements the old interface, and
we don't intend to use it in any new drivers, so put the moved out code
directly into a LUKS function rather than creating a generic
intermediate one.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>
Reviewed-by: Eric Blake <address@hidden>


  Commit: 1bedcaf120c128e9f565185171d378f8846d1567
      
https://github.com/qemu/qemu/commit/1bedcaf120c128e9f565185171d378f8846d1567
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/crypto.c
    M qapi/block-core.json

  Log Message:
  -----------
  luks: Support .bdrv_co_create

This adds the .bdrv_co_create driver callback to luks, which enables
image creation over QMP.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>


  Commit: e39e959e89b33bc0e17a702db42ea8a5f3763133
      
https://github.com/qemu/qemu/commit/e39e959e89b33bc0e17a702db42ea8a5f3763133
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/crypto.c

  Log Message:
  -----------
  luks: Turn invalid assertion into check

The .bdrv_getlength implementation of the crypto block driver asserted
that the payload offset isn't after EOF. This is an invalid assertion to
make as the image file could be corrupted. Instead, check it and return
-EIO if the file is too small for the payload offset.

Zero length images are fine, so trigger -EIO only on offset > len, not
on offset >= len as the assertion did before.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>


  Commit: 3d7ed9c453ad10e73edbcde1b718506ed7b86388
      
https://github.com/qemu/qemu/commit/3d7ed9c453ad10e73edbcde1b718506ed7b86388
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/crypto.c

  Log Message:
  -----------
  luks: Catch integer overflow for huge sizes

When you request an image size close to UINT64_MAX, the addition of the
crypto header may cause an integer overflow. Catch it instead of
silently truncating the image size.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>


  Commit: d06195e6a66733851701e8f8b56afd99e073448c
      
https://github.com/qemu/qemu/commit/d06195e6a66733851701e8f8b56afd99e073448c
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    A tests/qemu-iotests/210
    A tests/qemu-iotests/210.out
    M tests/qemu-iotests/common.rc
    M tests/qemu-iotests/group

  Log Message:
  -----------
  qemu-iotests: Test luks QMP image creation

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>


  Commit: 49858b5098ee4cf1a50587f83fdeb163cf81d54d
      
https://github.com/qemu/qemu/commit/49858b5098ee4cf1a50587f83fdeb163cf81d54d
  Author: Max Reitz <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vdi.c
    M qapi/block-core.json

  Log Message:
  -----------
  vdi: Pull option parsing from vdi_co_create

In preparation of QAPI-fying VDI image creation, we have to create a
BlockdevCreateOptionsVdi type which is received by a (future)
vdi_co_create().

vdi_co_create_opts() now converts the QemuOpts object into such a
BlockdevCreateOptionsVdi object.  The protocol-layer file is still
created in vdi_co_do_create() (and BlockdevCreateOptionsVdi.file is set
to an empty string), but that will be addressed by a follow-up patch.

Note that cluster-size is not part of the QAPI schema because it is not
supported by default.

Signed-off-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: ec73f060713db09623e6d9147b0229df70384dd0
      
https://github.com/qemu/qemu/commit/ec73f060713db09623e6d9147b0229df70384dd0
  Author: Max Reitz <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vdi.c

  Log Message:
  -----------
  vdi: Move file creation to vdi_co_create_opts

Signed-off-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: e38105748f09d6285df54b64f4ca13bd60613e72
      
https://github.com/qemu/qemu/commit/e38105748f09d6285df54b64f4ca13bd60613e72
  Author: Max Reitz <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vdi.c
    M qapi/block-core.json

  Log Message:
  -----------
  vdi: Implement .bdrv_co_create

Signed-off-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 1a5297366fe0d11e28fce694fc4377b85afca1da
      
https://github.com/qemu/qemu/commit/1a5297366fe0d11e28fce694fc4377b85afca1da
  Author: Fam Zheng <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Fix flags in reopen queue

Reopen flags are not synchronized according to the
bdrv_reopen_queue_child precedence until bdrv_reopen_prepare. It is a
bit too late: we already check the consistency in bdrv_check_perm before
that.

This fixes the bug that when bdrv_reopen a RO node as RW, the flags for
backing child are wrong. Before, we could recurse with flags.rw=1; now,
role->inherit_options + update_flags_from_options will make sure to
clear the bit when necessary.  Note that this will not clear an
explicitly set bit, as in the case of parallel block jobs (e.g.
test_stream_parallel in 030), because the explicit options include
'read-only=false' (for an intermediate node used by a different job).

Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: de963500c584b95f8d630fbb78713c47682638d1
      
https://github.com/qemu/qemu/commit/de963500c584b95f8d630fbb78713c47682638d1
  Author: Fam Zheng <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/qemu-iotests/153
    M tests/qemu-iotests/153.out

  Log Message:
  -----------
  iotests: Add regression test for commit base locking

Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 1511b4904001589172dc771e3d3e280839c37b94
      
https://github.com/qemu/qemu/commit/1511b4904001589172dc771e3d3e280839c37b94
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/parallels.c
    M qapi/block-core.json

  Log Message:
  -----------
  parallels: Support .bdrv_co_create

This adds the .bdrv_co_create driver callback to parallels, which
enables image creation over QMP.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>


  Commit: e1473133f7c358abf118b3d8b1d302f3125dd8f3
      
https://github.com/qemu/qemu/commit/e1473133f7c358abf118b3d8b1d302f3125dd8f3
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/qemu-iotests/181
    M tests/qemu-iotests/check

  Log Message:
  -----------
  qemu-iotests: Enable write tests for parallels

Originally we added parallels as a read-only format to qemu-iotests
where we did just some tests with a binary image. Since then, write and
image creation support has been added to the driver, so we can now
enable it in _supported_fmt generic.

The driver doesn't support migration yet, though, so we need to add it
to the list of exceptions in 181.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>


  Commit: 42a3e1ab367cdf38cce093de24eb406b99a4ef96
      
https://github.com/qemu/qemu/commit/42a3e1ab367cdf38cce093de24eb406b99a4ef96
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/qcow.c
    M qapi/block-core.json

  Log Message:
  -----------
  qcow: Support .bdrv_co_create

This adds the .bdrv_co_create driver callback to qcow, which
enables image creation over QMP.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>


  Commit: 959355a476122ba40c7f2953d1777daf63be54a5
      
https://github.com/qemu/qemu/commit/959355a476122ba40c7f2953d1777daf63be54a5
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/qed.c
    M qapi/block-core.json

  Log Message:
  -----------
  qed: Support .bdrv_co_create

This adds the .bdrv_co_create driver callback to qed, which
enables image creation over QMP.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>


  Commit: da23248f272bcb8d4fa75c994110d4366ccceb97
      
https://github.com/qemu/qemu/commit/da23248f272bcb8d4fa75c994110d4366ccceb97
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vdi.c

  Log Message:
  -----------
  vdi: Make comments consistent with other drivers

This makes the .bdrv_co_create(_opts) implementation of vdi look more
like the other recently converted block drivers.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>


  Commit: 09b68dab5a11e8657119bc1d2ab18e98a70530ed
      
https://github.com/qemu/qemu/commit/09b68dab5a11e8657119bc1d2ab18e98a70530ed
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vhdx.c
    M qapi/block-core.json

  Log Message:
  -----------
  vhdx: Support .bdrv_co_create

This adds the .bdrv_co_create driver callback to vhdx, which
enables image creation over QMP.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>


  Commit: 182c8835506eabd8ead4ea140c9d6ef94351afd0
      
https://github.com/qemu/qemu/commit/182c8835506eabd8ead4ea140c9d6ef94351afd0
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vpc.c
    M qapi/block-core.json

  Log Message:
  -----------
  vpc: Support .bdrv_co_create

This adds the .bdrv_co_create driver callback to vpc, which
enables image creation over QMP.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>


  Commit: 1cfeaf386e3727df0e057710d61593ca515dd07b
      
https://github.com/qemu/qemu/commit/1cfeaf386e3727df0e057710d61593ca515dd07b
  Author: Kevin Wolf <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vpc.c

  Log Message:
  -----------
  vpc: Require aligned size in .bdrv_co_create

Perform the rounding to match a CHS geometry only in the legacy code
path in .bdrv_co_create_opts. QMP now requires that the user already
passes a CHS aligned image size, unless force-size=true is given.

CHS alignment is required to make the image compatible with Virtual PC,
but not for use with newer Microsoft hypervisors.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>


  Commit: b76e4458b1eb3c32e9824fe6aa51f67d2b251748
      
https://github.com/qemu/qemu/commit/b76e4458b1eb3c32e9824fe6aa51f67d2b251748
  Author: Liang Li <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/mirror.c
    M blockdev.c
    M blockjob.c
    M hmp-commands.hx
    M include/block/blockjob.h
    M qapi/block-core.json
    M tests/test-blockjob-txn.c

  Log Message:
  -----------
  block/mirror: change the semantic of 'force' of block-job-cancel

When doing drive mirror to a low speed shared storage, if there was heavy
BLK IO write workload in VM after the 'ready' event, drive mirror block job
can't be canceled immediately, it would keep running until the heavy BLK IO
workload stopped in the VM.

Libvirt depends on the current block-job-cancel semantics, which is that
when used without a flag after the 'ready' event, the command blocks
until data is in sync.  However, these semantics are awkward in other
situations, for example, people may use drive mirror for realtime
backups while still wanting to use block live migration.  Libvirt cannot
start a block live migration while another drive mirror is in progress,
but the user would rather abandon the backup attempt as broken and
proceed with the live migration than be stuck waiting for the current
drive mirror backup to finish.

The drive-mirror command already includes a 'force' flag, which libvirt
does not use, although it documented the flag as only being useful to
quit a job which is paused.  However, since quitting a paused job has
the same effect as abandoning a backup in a non-paused job (namely, the
destination file is not in sync, and the command completes immediately),
we can just improve the documentation to make the force flag obviously
useful.

Cc: Paolo Bonzini <address@hidden>
Cc: Jeff Cody <address@hidden>
Cc: Kevin Wolf <address@hidden>
Cc: Max Reitz <address@hidden>
Cc: Eric Blake <address@hidden>
Cc: John Snow <address@hidden>
Reported-by: Huaitong Han <address@hidden>
Signed-off-by: Huaitong Han <address@hidden>
Signed-off-by: Liang Li <address@hidden>
Signed-off-by: Jeff Cody <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 4f8e3a1f225ea51707e2eec0aef5e8758b4d7e40
      
https://github.com/qemu/qemu/commit/4f8e3a1f225ea51707e2eec0aef5e8758b4d7e40
  Author: Fam Zheng <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/vvfat.c

  Log Message:
  -----------
  vvfat: Fix inherit_options flags

Overriding flags violates the precedence rules of
bdrv_reopen_queue_child. Just like the read-only option, no-flush should
be put into the options. The same is done in bdrv_temp_snapshot_options.

Reported-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 2c860e797ab2af7393c767cdd9e27aa1eecfc812
      
https://github.com/qemu/qemu/commit/2c860e797ab2af7393c767cdd9e27aa1eecfc812
  Author: Fam Zheng <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Fix leak of ignore_children in error path

Reported-by: Max Reitz <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: b16a7cfac51f944352459602968d7b475ad6273e
      
https://github.com/qemu/qemu/commit/b16a7cfac51f944352459602968d7b475ad6273e
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block/iscsi.c

  Log Message:
  -----------
  iscsi: fix iSER compilation

This fails in Fedora 28.

Reported-by: Andreas Schwab <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 181bb8822b581aae675566716a682187049fbd41
      
https://github.com/qemu/qemu/commit/181bb8822b581aae675566716a682187049fbd41
  Author: Jeff Cody <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/qemu-iotests/146.out

  Log Message:
  -----------
  block: fix iotest 146 output expectations

Commit bff5554843 added "force_size" into the common.filter for
_filter_img_create(), but test 146 still expects it in the output.

Signed-off-by: Jeff Cody <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 63ca8406beac44aa59c389ed8578d0c7b3da3402
      
https://github.com/qemu/qemu/commit/63ca8406beac44aa59c389ed8578d0c7b3da3402
  Author: Eric Blake <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M tests/qemu-iotests/check

  Log Message:
  -----------
  iotests: Avoid realpath, for CentOS 6

CentOS 6 lacks a realpath binary on the base install, which makes
all iotests runs fail since the 2.11 release:

001         - output mismatch (see 001.out.bad)
./check: line 815: realpath: command not found
diff: missing operand after `/home/dummy/qemu/tests/qemu-iotests/001.out'
diff: Try `diff --help' for more information.

Many of the uses of 'realpath' in the check script were being
used on the output of 'type -p' - but that is already an
absolute file name.  While a canonical name can often be
shorter (realpath gets rid of /../), it can also be longer (due
to symlink expansion); and we really don't care if the name is
canonical, merely that it was an executable file with an
absolute path.  These were broken in commit cceaf1db.

The remaining use of realpath was to convert a possibly relative
filename into an absolute one before calling diff to make it
easier to copy-and-paste the filename for moving the .bad file
into place as the new reference file even when running iotests
out-of-tree (see commit 93e53fb6), but $PWD can achieve the same
purpose.

Signed-off-by: Eric Blake <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 2c8cfc0b52b5a4d123c26c0b5fdf941be24805be
      
https://github.com/qemu/qemu/commit/2c8cfc0b52b5a4d123c26c0b5fdf941be24805be
  Author: Peter Maydell <address@hidden>
  Date:   2018-03-19 (Mon, 19 Mar 2018)

  Changed paths:
    M block.c
    M block/backup.c
    M block/commit.c
    M block/crypto.c
    M block/iscsi.c
    M block/mirror.c
    M block/parallels.c
    M block/qcow.c
    M block/qed.c
    M block/stream.c
    M block/trace-events
    M block/vdi.c
    M block/vhdx.c
    M block/vpc.c
    M block/vvfat.c
    M blockdev.c
    M blockjob.c
    M hmp-commands.hx
    M include/block/blockjob.h
    M include/block/blockjob_int.h
    M qapi/block-core.json
    M tests/qemu-iotests/030
    M tests/qemu-iotests/055
    M tests/qemu-iotests/056
    M tests/qemu-iotests/056.out
    M tests/qemu-iotests/109.out
    M tests/qemu-iotests/146.out
    M tests/qemu-iotests/153
    M tests/qemu-iotests/153.out
    M tests/qemu-iotests/181
    A tests/qemu-iotests/210
    A tests/qemu-iotests/210.out
    M tests/qemu-iotests/check
    M tests/qemu-iotests/common.rc
    M tests/qemu-iotests/group
    M tests/qemu-iotests/iotests.py
    M tests/test-bdrv-drain.c
    M tests/test-blockjob-txn.c
    M tests/test-blockjob.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches

# gpg: Signature made Mon 19 Mar 2018 11:01:45 GMT
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <address@hidden>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream: (46 commits)
  iotests: Avoid realpath, for CentOS 6
  block: fix iotest 146 output expectations
  iscsi: fix iSER compilation
  block: Fix leak of ignore_children in error path
  vvfat: Fix inherit_options flags
  block/mirror: change the semantic of 'force' of block-job-cancel
  vpc: Require aligned size in .bdrv_co_create
  vpc: Support .bdrv_co_create
  vhdx: Support .bdrv_co_create
  vdi: Make comments consistent with other drivers
  qed: Support .bdrv_co_create
  qcow: Support .bdrv_co_create
  qemu-iotests: Enable write tests for parallels
  parallels: Support .bdrv_co_create
  iotests: Add regression test for commit base locking
  block: Fix flags in reopen queue
  vdi: Implement .bdrv_co_create
  vdi: Move file creation to vdi_co_create_opts
  vdi: Pull option parsing from vdi_co_create
  qemu-iotests: Test luks QMP image creation
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/590a3914be26...2c8cfc0b52b5

reply via email to

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