dm vdo: tweak wait_for_completion_interruptible callers
authorMike Snitzer <snitzer@kernel.org>
Wed, 14 Feb 2024 15:25:39 +0000 (10:25 -0500)
committerMike Snitzer <snitzer@kernel.org>
Tue, 20 Feb 2024 18:43:19 +0000 (13:43 -0500)
Update uds_join_threads to delay in wait_for_completion_interruptible
loop. And cleanup style nits in perform_admin_operation().

Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Susan LeGendre-McGhee <slegendr@redhat.com>
Signed-off-by: Matthew Sakai <msakai@redhat.com>
drivers/md/dm-vdo/dm-vdo-target.c
drivers/md/dm-vdo/uds-threads.c

index e2e60a29e873eceb6a4ec1b5b1b7ec1302d834d5..e754b9e30cab5838e716367e39da475e2a07a6b7 100644 (file)
@@ -1235,9 +1235,10 @@ static int perform_admin_operation(struct vdo *vdo, u32 starting_phase,
         * Using the "interruptible" interface means that Linux will not log a message when we wait
         * for more than 120 seconds.
         */
-       while (wait_for_completion_interruptible(&admin->callback_sync) != 0)
-               /* However, if we get a signal in a user-mode process, we could spin... */
+       while (wait_for_completion_interruptible(&admin->callback_sync)) {
+               /* However, if we get a signal in a user-mode process, we could spin... */
                fsleep(1000);
+       }
 
        result = admin->completion.result;
        /* pairs with implicit barrier in cmpxchg above */
index e7524617f9f8735dc852223bfb17791024a4460d..769c783e342a2f87588e4bf7ef8a3b4e5c72f7cc 100644 (file)
@@ -6,6 +6,7 @@
 #include "uds-threads.h"
 
 #include <linux/completion.h>
+#include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/kthread.h>
 #include <linux/sched.h>
@@ -125,9 +126,8 @@ int uds_create_thread(void (*thread_function)(void *), void *thread_data,
 
 int uds_join_threads(struct thread *thread)
 {
-       while (wait_for_completion_interruptible(&thread->thread_done) != 0)
-               /* empty loop */
-               ;
+       while (wait_for_completion_interruptible(&thread->thread_done))
+               fsleep(1000);
 
        mutex_lock(&thread_mutex);
        hlist_del(&thread->thread_links);