Whamcloud - gitweb
LU-12678 socklnd: change ksnd_nthreads to atomic_t
[fs/lustre-release.git] / lnet / klnds / socklnd / socklnd_cb.c
index 2cb93a7..815a8a2 100644 (file)
@@ -1059,19 +1059,15 @@ ksocknal_thread_start(int (*fn)(void *arg), void *arg, char *name)
        if (IS_ERR(task))
                return PTR_ERR(task);
 
-       write_lock_bh(&ksocknal_data.ksnd_global_lock);
-       ksocknal_data.ksnd_nthreads++;
-       write_unlock_bh(&ksocknal_data.ksnd_global_lock);
+       atomic_inc(&ksocknal_data.ksnd_nthreads);
        return 0;
 }
 
 void
 ksocknal_thread_fini (void)
 {
-       write_lock_bh(&ksocknal_data.ksnd_global_lock);
-       if (--ksocknal_data.ksnd_nthreads == 0)
+       if (atomic_dec_and_test(&ksocknal_data.ksnd_nthreads))
                wake_up_var(&ksocknal_data.ksnd_nthreads);
-       write_unlock_bh(&ksocknal_data.ksnd_global_lock);
 }
 
 int