diff options
-rw-r--r-- | fs/gfs2/daemon.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/fs/gfs2/daemon.c b/fs/gfs2/daemon.c index b3830b92d78c..c2b5d69044c6 100644 --- a/fs/gfs2/daemon.c +++ b/fs/gfs2/daemon.c | |||
@@ -45,7 +45,7 @@ | |||
45 | 45 | ||
46 | int gfs2_scand(void *data) | 46 | int gfs2_scand(void *data) |
47 | { | 47 | { |
48 | struct gfs2_sbd *sdp = (struct gfs2_sbd *)data; | 48 | struct gfs2_sbd *sdp = data; |
49 | unsigned long t; | 49 | unsigned long t; |
50 | 50 | ||
51 | while (!kthread_should_stop()) { | 51 | while (!kthread_should_stop()) { |
@@ -67,20 +67,15 @@ int gfs2_scand(void *data) | |||
67 | 67 | ||
68 | int gfs2_glockd(void *data) | 68 | int gfs2_glockd(void *data) |
69 | { | 69 | { |
70 | struct gfs2_sbd *sdp = (struct gfs2_sbd *)data; | 70 | struct gfs2_sbd *sdp = data; |
71 | DECLARE_WAITQUEUE(wait_chan, current); | ||
72 | 71 | ||
73 | while (!kthread_should_stop()) { | 72 | while (!kthread_should_stop()) { |
74 | while (atomic_read(&sdp->sd_reclaim_count)) | 73 | while (atomic_read(&sdp->sd_reclaim_count)) |
75 | gfs2_reclaim_glock(sdp); | 74 | gfs2_reclaim_glock(sdp); |
76 | 75 | ||
77 | set_current_state(TASK_INTERRUPTIBLE); | 76 | wait_event_interruptible(sdp->sd_reclaim_wq, |
78 | add_wait_queue(&sdp->sd_reclaim_wq, &wait_chan); | 77 | (atomic_read(&sdp->sd_reclaim_count) || |
79 | if (!atomic_read(&sdp->sd_reclaim_count) && | 78 | kthread_should_stop())); |
80 | !kthread_should_stop()) | ||
81 | schedule(); | ||
82 | remove_wait_queue(&sdp->sd_reclaim_wq, &wait_chan); | ||
83 | set_current_state(TASK_RUNNING); | ||
84 | } | 79 | } |
85 | 80 | ||
86 | return 0; | 81 | return 0; |
@@ -94,7 +89,7 @@ int gfs2_glockd(void *data) | |||
94 | 89 | ||
95 | int gfs2_recoverd(void *data) | 90 | int gfs2_recoverd(void *data) |
96 | { | 91 | { |
97 | struct gfs2_sbd *sdp = (struct gfs2_sbd *)data; | 92 | struct gfs2_sbd *sdp = data; |
98 | unsigned long t; | 93 | unsigned long t; |
99 | 94 | ||
100 | while (!kthread_should_stop()) { | 95 | while (!kthread_should_stop()) { |
@@ -116,7 +111,7 @@ int gfs2_recoverd(void *data) | |||
116 | 111 | ||
117 | int gfs2_logd(void *data) | 112 | int gfs2_logd(void *data) |
118 | { | 113 | { |
119 | struct gfs2_sbd *sdp = (struct gfs2_sbd *)data; | 114 | struct gfs2_sbd *sdp = data; |
120 | struct gfs2_holder ji_gh; | 115 | struct gfs2_holder ji_gh; |
121 | unsigned long t; | 116 | unsigned long t; |
122 | 117 | ||
@@ -159,7 +154,7 @@ int gfs2_logd(void *data) | |||
159 | 154 | ||
160 | int gfs2_quotad(void *data) | 155 | int gfs2_quotad(void *data) |
161 | { | 156 | { |
162 | struct gfs2_sbd *sdp = (struct gfs2_sbd *)data; | 157 | struct gfs2_sbd *sdp = data; |
163 | unsigned long t; | 158 | unsigned long t; |
164 | int error; | 159 | int error; |
165 | 160 | ||
@@ -209,7 +204,7 @@ int gfs2_quotad(void *data) | |||
209 | 204 | ||
210 | int gfs2_inoded(void *data) | 205 | int gfs2_inoded(void *data) |
211 | { | 206 | { |
212 | struct gfs2_sbd *sdp = (struct gfs2_sbd *)data; | 207 | struct gfs2_sbd *sdp = data; |
213 | unsigned long t; | 208 | unsigned long t; |
214 | int error; | 209 | int error; |
215 | 210 | ||