Am 19.06.2020 um 21:56 hat Eric Blake geschrieben: > From: John Snow <js...@redhat.com> > > This job copies the allocation map into a bitmap. It's a job because > there's no guarantee that allocation interrogation will be quick (or > won't hang), so it cannot be retrofitted into block-dirty-bitmap-merge. > > It was designed with different possible population patterns in mind, > but only top layer allocation was implemented for now. > > Signed-off-by: John Snow <js...@redhat.com> > Signed-off-by: Eric Blake <ebl...@redhat.com>
> +BlockJob *bitpop_job_create( > + const char *job_id, > + BlockDriverState *bs, > + BdrvDirtyBitmap *target_bitmap, > + BitmapPattern pattern, > + BlockdevOnError on_error, > + int creation_flags, > + BlockCompletionFunc *cb, > + void *opaque, > + JobTxn *txn, > + Error **errp) > +{ > + int64_t len; > + BitpopBlockJob *job = NULL; > + int64_t cluster_size; > + BdrvDirtyBitmap *new_bitmap = NULL; > + > + assert(bs); > + assert(target_bitmap); > + > + if (!bdrv_is_inserted(bs)) { > + error_setg(errp, "Device is not inserted: %s", > + bdrv_get_device_name(bs)); > + return NULL; > + } > + > + if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_BACKUP_SOURCE, errp)) { > + return NULL; > + } So did we decide that we'll keep the legacy op blocker with the type of another block job even though nobody could tell what it's good for? Kevin