aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2018-04-12 17:29:59 +0200
committerKevin Wolf <kwolf@redhat.com>2018-05-23 14:30:49 +0200
commit33e9e9bd62d9ae00880d9e12ad8a5b7d2c00e8a5 (patch)
treeeacaf4579f55de26f5a3ca8c45fa0faa60a19ba3 /block
parenta81e0a825e3b89039a427bca037112f461b95fec (diff)
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>
Diffstat (limited to 'block')
-rw-r--r--block/backup.c4
-rw-r--r--block/commit.c4
-rw-r--r--block/mirror.c10
-rw-r--r--block/stream.c4
4 files changed, 16 insertions, 6 deletions
diff --git a/block/backup.c b/block/backup.c
index e14d99560d..9e672bbd5e 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -523,7 +523,9 @@ static void coroutine_fn backup_run(void *opaque)
}
static const BlockJobDriver backup_job_driver = {
- .instance_size = sizeof(BackupBlockJob),
+ .job_driver = {
+ .instance_size = sizeof(BackupBlockJob),
+ },
.job_type = BLOCK_JOB_TYPE_BACKUP,
.start = backup_run,
.commit = backup_commit,
diff --git a/block/commit.c b/block/commit.c
index ba5df6aa0a..18cbb2f9c4 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -215,7 +215,9 @@ out:
}
static const BlockJobDriver commit_job_driver = {
- .instance_size = sizeof(CommitBlockJob),
+ .job_driver = {
+ .instance_size = sizeof(CommitBlockJob),
+ },
.job_type = BLOCK_JOB_TYPE_COMMIT,
.start = commit_run,
};
diff --git a/block/mirror.c b/block/mirror.c
index a4197bb975..aa1d6b742e 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -913,7 +913,7 @@ static void mirror_complete(BlockJob *job, Error **errp)
if (!s->synced) {
error_setg(errp, "The active block job '%s' cannot be completed",
- job->id);
+ job->job.id);
return;
}
@@ -986,7 +986,9 @@ static void mirror_drain(BlockJob *job)
}
static const BlockJobDriver mirror_job_driver = {
- .instance_size = sizeof(MirrorBlockJob),
+ .job_driver = {
+ .instance_size = sizeof(MirrorBlockJob),
+ },
.job_type = BLOCK_JOB_TYPE_MIRROR,
.start = mirror_run,
.complete = mirror_complete,
@@ -996,7 +998,9 @@ static const BlockJobDriver mirror_job_driver = {
};
static const BlockJobDriver commit_active_job_driver = {
- .instance_size = sizeof(MirrorBlockJob),
+ .job_driver = {
+ .instance_size = sizeof(MirrorBlockJob),
+ },
.job_type = BLOCK_JOB_TYPE_COMMIT,
.start = mirror_run,
.complete = mirror_complete,
diff --git a/block/stream.c b/block/stream.c
index df9660d2fc..f88fc75141 100644
--- a/block/stream.c
+++ b/block/stream.c
@@ -209,7 +209,9 @@ out:
}
static const BlockJobDriver stream_job_driver = {
- .instance_size = sizeof(StreamBlockJob),
+ .job_driver = {
+ .instance_size = sizeof(StreamBlockJob),
+ },
.job_type = BLOCK_JOB_TYPE_STREAM,
.start = stream_run,
};