mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
job: Create Job, JobDriver and job_create()
This is the first step towards creating an infrastructure for generic background jobs that aren't tied to a block device. For now, Job only stores its ID and JobDriver, the rest stays in BlockJob. The following patches will move over more parts of BlockJob to Job if they are meaningful outside the context of a block job. BlockJob.driver is now redundant, but this patch leaves it around to avoid unnecessary churn. The next patches will get rid of almost all of its uses anyway so that it can be removed later with much less churn. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
a81e0a825e
commit
33e9e9bd62
14 changed files with 169 additions and 44 deletions
|
@ -520,7 +520,9 @@ static void test_job_complete(BlockJob *job, Error **errp)
|
|||
}
|
||||
|
||||
BlockJobDriver test_job_driver = {
|
||||
.instance_size = sizeof(TestBlockJob),
|
||||
.job_driver = {
|
||||
.instance_size = sizeof(TestBlockJob),
|
||||
},
|
||||
.start = test_job_start,
|
||||
.complete = test_job_complete,
|
||||
};
|
||||
|
|
|
@ -74,7 +74,9 @@ static void test_block_job_cb(void *opaque, int ret)
|
|||
}
|
||||
|
||||
static const BlockJobDriver test_block_job_driver = {
|
||||
.instance_size = sizeof(TestBlockJob),
|
||||
.job_driver = {
|
||||
.instance_size = sizeof(TestBlockJob),
|
||||
},
|
||||
.start = test_block_job_run,
|
||||
};
|
||||
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
#include "sysemu/block-backend.h"
|
||||
|
||||
static const BlockJobDriver test_block_job_driver = {
|
||||
.instance_size = sizeof(BlockJob),
|
||||
.job_driver = {
|
||||
.instance_size = sizeof(BlockJob),
|
||||
},
|
||||
};
|
||||
|
||||
static void block_job_cb(void *opaque, int ret)
|
||||
|
@ -38,9 +40,9 @@ static BlockJob *mk_job(BlockBackend *blk, const char *id,
|
|||
g_assert_null(errp);
|
||||
g_assert_nonnull(job);
|
||||
if (id) {
|
||||
g_assert_cmpstr(job->id, ==, id);
|
||||
g_assert_cmpstr(job->job.id, ==, id);
|
||||
} else {
|
||||
g_assert_cmpstr(job->id, ==, blk_name(blk));
|
||||
g_assert_cmpstr(job->job.id, ==, blk_name(blk));
|
||||
}
|
||||
} else {
|
||||
g_assert_nonnull(errp);
|
||||
|
@ -192,7 +194,9 @@ static void coroutine_fn cancel_job_start(void *opaque)
|
|||
}
|
||||
|
||||
static const BlockJobDriver test_cancel_driver = {
|
||||
.instance_size = sizeof(CancelJob),
|
||||
.job_driver = {
|
||||
.instance_size = sizeof(CancelJob),
|
||||
},
|
||||
.start = cancel_job_start,
|
||||
.complete = cancel_job_complete,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue