fs: dlm: synchronize dlm before shutdown
authorAlexander Aring <aahringo@redhat.com>
Thu, 27 Aug 2020 19:02:48 +0000 (15:02 -0400)
committerDavid Teigland <teigland@redhat.com>
Thu, 27 Aug 2020 20:59:09 +0000 (15:59 -0500)
This patch moves the dlm workqueue dlm synchronization before shutdown
handling. The patch just flushes all pending work before starting to
shutdown the connection. At least for the send_workqeue we should flush
the workqueue to make sure there is no new connection handling going on
as dlm_allow_conn switch is turned to false before.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/lowcomms.c

index 5050fe0..ed09887 100644 (file)
@@ -1624,10 +1624,6 @@ static void work_flush(void)
        struct hlist_node *n;
        struct connection *con;
 
-       if (recv_workqueue)
-               flush_workqueue(recv_workqueue);
-       if (send_workqueue)
-               flush_workqueue(send_workqueue);
        do {
                ok = 1;
                foreach_conn(stop_conn);
@@ -1659,6 +1655,12 @@ void dlm_lowcomms_stop(void)
        mutex_lock(&connections_lock);
        dlm_allow_conn = 0;
        mutex_unlock(&connections_lock);
+
+       if (recv_workqueue)
+               flush_workqueue(recv_workqueue);
+       if (send_workqueue)
+               flush_workqueue(send_workqueue);
+
        foreach_conn(shutdown_conn);
        work_flush();
        clean_writequeues();