Lines Matching refs:job

56 static void backup_cleanup_sync_bitmap(BackupBlockJob *job, int ret)  in backup_cleanup_sync_bitmap()  argument
59 bool sync = (((ret == 0) || (job->bitmap_mode == BITMAP_SYNC_MODE_ALWAYS)) \ in backup_cleanup_sync_bitmap()
60 && (job->bitmap_mode != BITMAP_SYNC_MODE_NEVER)); in backup_cleanup_sync_bitmap()
67 bm = bdrv_dirty_bitmap_abdicate(job->sync_bitmap, NULL); in backup_cleanup_sync_bitmap()
73 bm = bdrv_reclaim_dirty_bitmap(job->sync_bitmap, NULL); in backup_cleanup_sync_bitmap()
78 if (ret < 0 && job->bitmap_mode == BITMAP_SYNC_MODE_ALWAYS) { in backup_cleanup_sync_bitmap()
80 bdrv_dirty_bitmap_merge_internal(bm, block_copy_dirty_bitmap(job->bcs), in backup_cleanup_sync_bitmap()
85 static void backup_commit(Job *job) in backup_commit() argument
87 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job); in backup_commit()
93 static void backup_abort(Job *job) in backup_abort() argument
95 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job); in backup_abort()
101 static void backup_clean(Job *job) in backup_clean() argument
103 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job); in backup_clean()
108 void backup_do_checkpoint(BlockJob *job, Error **errp) in backup_do_checkpoint() argument
110 BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common); in backup_do_checkpoint()
112 assert(block_job_driver(job) == &backup_job_driver); in backup_do_checkpoint()
124 static BlockErrorAction backup_error_action(BackupBlockJob *job, in backup_error_action() argument
128 return block_job_error_action(&job->common, job->on_source_error, in backup_error_action()
131 return block_job_error_action(&job->common, job->on_target_error, in backup_error_action()
142 aio_co_wake(s->common.job.co); in backup_block_copy_callback()
144 job_enter(&s->common.job); in backup_block_copy_callback()
148 static int coroutine_fn backup_loop(BackupBlockJob *job) in backup_loop() argument
156 job->bg_bcs_call = s = block_copy_async(job->bcs, 0, in backup_loop()
157 QEMU_ALIGN_UP(job->len, job->cluster_size), in backup_loop()
158 job->perf.max_workers, job->perf.max_chunk, in backup_loop()
159 backup_block_copy_callback, job); in backup_loop()
162 !job_is_cancelled(&job->common.job)) in backup_loop()
164 job_yield(&job->common.job); in backup_loop()
168 assert(job_is_cancelled(&job->common.job)); in backup_loop()
174 job->wait = true; in backup_loop()
181 if (job_is_cancelled(&job->common.job) || in backup_loop()
202 act = backup_error_action(job, error_is_read, -ret); in backup_loop()
211 job_pause_point(&job->common.job); in backup_loop()
225 job->bg_bcs_call = NULL; in backup_loop()
229 static void backup_init_bcs_bitmap(BackupBlockJob *job) in backup_init_bcs_bitmap() argument
232 BdrvDirtyBitmap *bcs_bitmap = block_copy_dirty_bitmap(job->bcs); in backup_init_bcs_bitmap()
234 if (job->sync_mode == MIRROR_SYNC_MODE_BITMAP) { in backup_init_bcs_bitmap()
236 bdrv_dirty_bitmap_merge_internal(bcs_bitmap, job->sync_bitmap, NULL, in backup_init_bcs_bitmap()
238 } else if (job->sync_mode == MIRROR_SYNC_MODE_TOP) { in backup_init_bcs_bitmap()
243 block_copy_set_skip_unallocated(job->bcs, true); in backup_init_bcs_bitmap()
247 job_progress_set_remaining(&job->common.job, estimate); in backup_init_bcs_bitmap()
250 static int coroutine_fn backup_run(Job *job, Error **errp) in backup_run() argument
252 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job); in backup_run()
262 if (job_is_cancelled(job)) { in backup_run()
266 job_pause_point(job); in backup_run()
268 if (job_is_cancelled(job)) { in backup_run()
290 while (!job_is_cancelled(job)) { in backup_run()
295 job_yield(job); in backup_run()
304 static void coroutine_fn backup_pause(Job *job) in backup_pause() argument
306 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job); in backup_pause()
315 static void backup_set_speed(BlockJob *job, int64_t speed) in backup_set_speed() argument
317 BackupBlockJob *s = container_of(job, BackupBlockJob, common); in backup_set_speed()
331 static bool backup_cancel(Job *job, bool force) in backup_cancel() argument
333 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job); in backup_cancel()
369 BackupBlockJob *job = NULL; in backup_job_create() local
475 job = block_job_create(job_id, &backup_job_driver, txn, cbw, in backup_job_create()
478 if (!job) { in backup_job_create()
482 job->cbw = cbw; in backup_job_create()
483 job->source_bs = bs; in backup_job_create()
484 job->target_bs = target; in backup_job_create()
485 job->on_source_error = on_source_error; in backup_job_create()
486 job->on_target_error = on_target_error; in backup_job_create()
487 job->sync_mode = sync_mode; in backup_job_create()
488 job->sync_bitmap = sync_bitmap; in backup_job_create()
489 job->bitmap_mode = bitmap_mode; in backup_job_create()
490 job->bcs = bcs; in backup_job_create()
491 job->cluster_size = cluster_size; in backup_job_create()
492 job->len = len; in backup_job_create()
493 job->perf = *perf; in backup_job_create()
496 block_copy_set_progress_meter(bcs, &job->common.job.progress); in backup_job_create()
501 block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL, in backup_job_create()
505 return &job->common; in backup_job_create()