Skip to content

Commit

Permalink
[GFS2] check kthread_should_stop when waiting
Browse files Browse the repository at this point in the history
Use wait_event_interruptible() in the lock_dlm thread instead
of an open coded equivalent, and include a kthread_should_stop()
check in the wait test so we don't miss a kthread_stop().

Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
  • Loading branch information
David Teigland authored and Steven Whitehouse committed Jan 25, 2008
1 parent c7227e4 commit 8cbc434
Showing 1 changed file with 2 additions and 7 deletions.
9 changes: 2 additions & 7 deletions fs/gfs2/locking/dlm/thread.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,18 +273,13 @@ static int gdlm_thread(void *data, int blist)
struct gdlm_ls *ls = (struct gdlm_ls *) data;
struct gdlm_lock *lp = NULL;
uint8_t complete, blocking, submit, drop;
DECLARE_WAITQUEUE(wait, current);

/* Only thread1 is allowed to do blocking callbacks since gfs
may wait for a completion callback within a blocking cb. */

while (!kthread_should_stop()) {
set_current_state(TASK_INTERRUPTIBLE);
add_wait_queue(&ls->thread_wait, &wait);
if (no_work(ls, blist))
schedule();
remove_wait_queue(&ls->thread_wait, &wait);
set_current_state(TASK_RUNNING);
wait_event_interruptible(ls->thread_wait,
!no_work(ls, blist) || kthread_should_stop());

complete = blocking = submit = drop = 0;

Expand Down

0 comments on commit 8cbc434

Please sign in to comment.