qemu/include
John Snow 58b295ba52 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 <jsnow@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2018-03-19 12:01:24 +01:00
..
block blockjobs: add status enum 2018-03-19 12:01:24 +01:00
chardev chardev: introduce chr_machine_done hook 2018-03-12 16:12:46 +01:00
crypto Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
disas RISC-V Disassembler 2018-03-07 08:30:28 +13:00
exec linux-user: fix mmap/munmap/mprotect/mremap/shmat 2018-03-09 19:21:34 +01:00
fpu softfloat: use floatx80_infinity in softfloat 2018-03-04 17:27:35 +01:00
hw pc: correct misspelled CPU model-id for pc 2.2 2018-03-16 16:29:07 -03:00
io qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
libdecnumber Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
migration migration: add postcopy migration of dirty bitmaps 2018-03-13 17:06:09 -04:00
monitor qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
net -----BEGIN PGP SIGNATURE----- 2018-03-05 14:27:24 +00:00
qapi qdict: Introduce qdict_rename_keys() 2018-03-09 15:17:47 +01:00
qemu * Record-replay lockstep execution, log dumper and fixes (Alex, Pavel) 2018-03-16 11:05:03 +00:00
qom qom: introduce object_class_get_list_sorted 2018-03-12 15:21:10 +01:00
scsi Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
standard-headers standard-headers: add drm/drm_fourcc.h 2018-03-13 11:17:28 -06:00
sysemu * Record-replay lockstep execution, log dumper and fixes (Alex, Pavel) 2018-03-16 11:05:03 +00:00
ui console: minimal hotplug suport 2018-03-13 11:17:29 -06:00
elf.h RISC-V ELF Machine Definition 2018-03-07 08:30:28 +13:00
glib-compat.h glib-compat: move G_SOURCE_CONTINUE/REMOVE there 2017-10-10 16:33:55 +02:00
qemu-common.h Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
qemu-io.h hmp: Request permissions in qemu-io 2017-02-28 20:47:50 +01:00
trace-tcg.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00