On 1/24/25 23:36, Alexander Atanasov wrote:
+int ploop_worker(void *data)
+{
+       struct ploop_worker *worker = data;
+       struct ploop *ploop = worker->ploop;
+
+       for (;;) {
+               set_current_state(TASK_INTERRUPTIBLE);
+
                if (llist_empty(&ploop->pios[PLOOP_LIST_FLUSH]) &&
-                       llist_empty(&ploop->pios[PLOOP_LIST_PREPARE]) &&
-                       llist_empty(&ploop->pios[PLOOP_LIST_DEFERRED]) &&
-                       llist_empty(&ploop->pios[PLOOP_LIST_DISCARD]) &&
-                       llist_empty(&ploop->pios[PLOOP_LIST_COW]) &&
-                       llist_empty(&ploop->llresubmit_pios)
-                       )
+                   llist_empty(&ploop->pios[PLOOP_LIST_PREPARE]) &&
+                   llist_empty(&ploop->pios[PLOOP_LIST_DEFERRED]) &&
+                   llist_empty(&ploop->pios[PLOOP_LIST_DISCARD]) &&
+                   llist_empty(&ploop->pios[PLOOP_LIST_COW]) &&
+                   llist_empty(&ploop->llresubmit_pios) &&
+                   !ploop->force_md_writeback) {
+                       if (kthread_should_stop()) {
+                               
wait_event_interruptible(ploop->dispatcher_wq_data,
+                                               
(!ploop_runners_have_pending(ploop)));

nit: excess parenthesis in the second argument

+                               __set_current_state(TASK_RUNNING);
+                               break;
+                       }
                        schedule();
+                       /* now check for pending work */
+               }
__set_current_state(TASK_RUNNING);
                do_ploop_run_work(ploop);
-               cond_resched();
+               cond_resched(); /* give other processes chance to run */
+               if (kthread_should_stop()) {
+                       wait_event_interruptible(ploop->dispatcher_wq_data,
+                                               
(!ploop_runners_have_pending(ploop)));

same

+                       __set_current_state(TASK_RUNNING);
+                       break;
+               }
        }
        return 0;
  }

--
Best regards, Tikhomirov Pavel
Senior Software Developer, Virtuozzo.

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to