[Cluster-devel] cluster/gfs-kernel/src/dlm thread.c

teigland at sourceware.org teigland at sourceware.org
Mon Jan 14 16:00:21 UTC 2008


CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	teigland at sourceware.org	2008-01-14 16:00:20

Modified files:
	gfs-kernel/src/dlm: thread.c 

Log message:
	bz 352731
	
	I've looked at other users of kthread_stop()/kthread_should_stop(),
	and most seem to incorporate a call to kthread_should_stop() within
	the test that adds the thread to a wait_queue.  I'm guessing that
	that's what we should be doing also (and at the same time using
	wait_event_interruptible() instead of an open-coded equivalent.)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/dlm/thread.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.16.2.6&r2=1.16.2.7

--- cluster/gfs-kernel/src/dlm/Attic/thread.c	2007/08/31 15:23:32	1.16.2.6
+++ cluster/gfs-kernel/src/dlm/Attic/thread.c	2008/01/14 16:00:20	1.16.2.7
@@ -330,15 +330,10 @@
 	dlm_lock_t *lp = NULL;
 	dlm_start_t *ds = NULL;
 	uint8_t complete, blocking, submit, start, finish, drop, shrink;
-	DECLARE_WAITQUEUE(wait, current);
 
 	while (!kthread_should_stop()) {
-		set_current_state(TASK_INTERRUPTIBLE);
-		add_wait_queue(&dlm->wait, &wait);
-		if (no_work(dlm))
-			schedule();
-		remove_wait_queue(&dlm->wait, &wait);
-		set_current_state(TASK_RUNNING);
+		wait_event_interruptible(dlm->wait,
+				!no_work(dlm) || kthread_should_stop());
 
 		complete = blocking = submit = start = finish = 0;
 		drop = shrink = 0;




More information about the Cluster-devel mailing list