@@ -380,6 +380,8 @@ void job_ref(Job *job)
void job_unref(Job *job)
{
+ assert(qemu_in_main_thread());
+
if (--job->refcnt == 0) {
assert(job->status == JOB_STATUS_NULL);
assert(!timer_pending(&job->sleep_timer));
@@ -601,6 +603,7 @@ bool job_user_paused(Job *job)
void job_user_resume(Job *job, Error **errp)
{
assert(job);
+ assert(qemu_in_main_thread());
if (!job->user_paused || job->pause_count <= 0) {
error_setg(errp, "Can't resume a job that was not paused");
return;
@@ -671,6 +674,7 @@ static void job_update_rc(Job *job)
static void job_commit(Job *job)
{
assert(!job->ret);
+ assert(qemu_in_main_thread());
if (job->driver->commit) {
job->driver->commit(job);
}
@@ -679,6 +683,7 @@ static void job_commit(Job *job)
static void job_abort(Job *job)
{
assert(job->ret);
+ assert(qemu_in_main_thread());
if (job->driver->abort) {
job->driver->abort(job);
}
@@ -686,6 +691,7 @@ static void job_abort(Job *job)
static void job_clean(Job *job)
{
+ assert(qemu_in_main_thread());
if (job->driver->clean) {
job->driver->clean(job);
}
@@ -725,6 +731,7 @@ static int job_finalize_single(Job *job)
static void job_cancel_async(Job *job, bool force)
{
+ assert(qemu_in_main_thread());
if (job->driver->cancel) {
force = job->driver->cancel(job, force);
} else {
@@ -824,6 +831,7 @@ static void job_completed_txn_abort(Job *job)
static int job_prepare(Job *job)
{
+ assert(qemu_in_main_thread());
if (job->ret == 0 && job->driver->prepare) {
job->ret = job->driver->prepare(job);
job_update_rc(job);
@@ -1053,6 +1061,7 @@ void job_complete(Job *job, Error **errp)
{
/* Should not be reachable via external interface for internal jobs */
assert(job->id);
+ assert(qemu_in_main_thread());
if (job_apply_verb(job, JOB_VERB_COMPLETE, errp)) {
return;
}