qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 17/42] job: Move defer_to_main_loop to Job


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH 17/42] job: Move defer_to_main_loop to Job
Date: Wed, 16 May 2018 13:37:50 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 05/09/2018 11:26 AM, Kevin Wolf wrote:
Signed-off-by: Kevin Wolf <address@hidden>
---

Rather sparse on the commit message, given the other comments in this thread.

+++ b/include/qemu/job.h
@@ -58,6 +58,9 @@ typedef struct Job {
       */
      bool cancelled;
+ /** Set to true when the job has deferred work to the main loop. */
+    bool deferred_to_main_loop;
+
      /** Element of the list of jobs */
      QLIST_ENTRY(Job) job_list;
  } Job;
@@ -131,6 +134,23 @@ Job *job_get(const char *id);
   */
  int job_apply_verb(Job *job, JobVerb bv, Error **errp);
+typedef void JobDeferToMainLoopFn(Job *job, void *opaque);
+
+/**
+ * @job: The job
+ * @fn: The function to run in the main loop
+ * @opaque: The opaque value that is passed to @fn
+ *
+ * This function must be called by the main job coroutine just before it
+ * returns.  @fn is executed in the main loop with the job AioContext acquired.
+ *
+ * Block jobs must call bdrv_unref(), bdrv_close(), and anything that uses
+ * bdrv_drain_all() in the main loop.

Do we still want this block-job-specific comment in the main job.h header?

+ *
+ * The @job AioContext is held while @fn executes.
+ */
+void job_defer_to_main_loop(Job *job, JobDeferToMainLoopFn *fn, void *opaque);
+


--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org



reply via email to

[Prev in Thread] Current Thread [Next in Thread]