Mike Christie 4b13cbef79 vhost: Fix worker hangs due to missed wake up calls
We can race where we have added work to the work_list, but
vhost_task_fn has passed that check but not yet set us into
TASK_INTERRUPTIBLE. wake_up_process will see us in TASK_RUNNING and
just return.

This bug was intoduced in commit f9010dbdce91 ("fork, vhost: Use
CLONE_THREAD to fix freezer/ps regression") when I moved the setting
of TASK_INTERRUPTIBLE to simplfy the code and avoid get_signal from
logging warnings about being in the wrong state. This moves the setting
of TASK_INTERRUPTIBLE back to before we test if we need to stop the
task to avoid a possible race there as well. We then have vhost_worker
set TASK_RUNNING if it finds work similar to before.

Fixes: f9010dbdce91 ("fork, vhost: Use CLONE_THREAD to fix freezer/ps regression")
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Message-Id: <20230607192338.6041-3-michael.christie@oracle.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2023-06-08 15:43:09 -04:00
..
2023-04-29 10:05:22 -07:00
2023-04-27 12:07:50 -07:00
2022-12-02 11:25:00 +01:00
2023-04-29 10:29:57 -07:00
2022-12-21 14:31:52 -08:00
2023-05-27 09:42:56 -07:00
2023-04-28 14:53:30 -07:00
2023-05-28 07:15:33 -04:00
2023-04-24 12:16:14 -07:00
2023-06-03 08:23:16 -04:00
2022-08-29 19:47:03 -04:00
2022-09-26 10:13:13 -07:00
2023-03-24 11:01:29 +01:00
2023-04-27 16:36:55 -07:00
2023-04-20 22:55:35 -04:00
2023-04-03 11:16:56 +02:00
2023-04-27 16:36:55 -07:00
2022-08-06 16:38:17 -07:00
2023-04-29 09:48:52 -07:00