diff options
-rw-r--r-- | fs/dlm/dir.c | 1 | ||||
-rw-r--r-- | fs/dlm/member.c | 7 | ||||
-rw-r--r-- | fs/dlm/recover.c | 2 | ||||
-rw-r--r-- | fs/dlm/recoverd.c | 45 |
4 files changed, 28 insertions, 27 deletions
diff --git a/fs/dlm/dir.c b/fs/dlm/dir.c index 7b84c1dbc82e..83641574b016 100644 --- a/fs/dlm/dir.c +++ b/fs/dlm/dir.c | |||
@@ -290,7 +290,6 @@ int dlm_recover_directory(struct dlm_ls *ls) | |||
290 | 290 | ||
291 | out_status: | 291 | out_status: |
292 | error = 0; | 292 | error = 0; |
293 | dlm_set_recover_status(ls, DLM_RS_DIR); | ||
294 | log_debug(ls, "dlm_recover_directory %d entries", count); | 293 | log_debug(ls, "dlm_recover_directory %d entries", count); |
295 | out_free: | 294 | out_free: |
296 | kfree(last_name); | 295 | kfree(last_name); |
diff --git a/fs/dlm/member.c b/fs/dlm/member.c index b12532e553f8..5ebd1df69675 100644 --- a/fs/dlm/member.c +++ b/fs/dlm/member.c | |||
@@ -251,7 +251,6 @@ int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out) | |||
251 | ls->ls_low_nodeid = low; | 251 | ls->ls_low_nodeid = low; |
252 | 252 | ||
253 | make_member_array(ls); | 253 | make_member_array(ls); |
254 | dlm_set_recover_status(ls, DLM_RS_NODES); | ||
255 | *neg_out = neg; | 254 | *neg_out = neg; |
256 | 255 | ||
257 | error = ping_members(ls); | 256 | error = ping_members(ls); |
@@ -261,12 +260,8 @@ int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out) | |||
261 | ls->ls_members_result = error; | 260 | ls->ls_members_result = error; |
262 | complete(&ls->ls_members_done); | 261 | complete(&ls->ls_members_done); |
263 | } | 262 | } |
264 | if (error) | ||
265 | goto out; | ||
266 | 263 | ||
267 | error = dlm_recover_members_wait(ls); | 264 | log_debug(ls, "dlm_recover_members %d nodes", ls->ls_num_nodes); |
268 | out: | ||
269 | log_debug(ls, "total members %d error %d", ls->ls_num_nodes, error); | ||
270 | return error; | 265 | return error; |
271 | } | 266 | } |
272 | 267 | ||
diff --git a/fs/dlm/recover.c b/fs/dlm/recover.c index 50467cefdbd8..81b239304495 100644 --- a/fs/dlm/recover.c +++ b/fs/dlm/recover.c | |||
@@ -542,8 +542,6 @@ int dlm_recover_locks(struct dlm_ls *ls) | |||
542 | out: | 542 | out: |
543 | if (error) | 543 | if (error) |
544 | recover_list_clear(ls); | 544 | recover_list_clear(ls); |
545 | else | ||
546 | dlm_set_recover_status(ls, DLM_RS_LOCKS); | ||
547 | return error; | 545 | return error; |
548 | } | 546 | } |
549 | 547 | ||
diff --git a/fs/dlm/recoverd.c b/fs/dlm/recoverd.c index 774da3cf92c6..5a9e1a49a860 100644 --- a/fs/dlm/recoverd.c +++ b/fs/dlm/recoverd.c | |||
@@ -54,7 +54,7 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
54 | unsigned long start; | 54 | unsigned long start; |
55 | int error, neg = 0; | 55 | int error, neg = 0; |
56 | 56 | ||
57 | log_debug(ls, "recover %llx", (unsigned long long)rv->seq); | 57 | log_debug(ls, "dlm_recover %llx", (unsigned long long)rv->seq); |
58 | 58 | ||
59 | mutex_lock(&ls->ls_recoverd_active); | 59 | mutex_lock(&ls->ls_recoverd_active); |
60 | 60 | ||
@@ -76,14 +76,22 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
76 | 76 | ||
77 | /* | 77 | /* |
78 | * Add or remove nodes from the lockspace's ls_nodes list. | 78 | * Add or remove nodes from the lockspace's ls_nodes list. |
79 | * Also waits for all nodes to complete dlm_recover_members. | ||
80 | */ | 79 | */ |
81 | 80 | ||
82 | error = dlm_recover_members(ls, rv, &neg); | 81 | error = dlm_recover_members(ls, rv, &neg); |
83 | if (error) { | 82 | if (error) { |
84 | log_debug(ls, "recover_members failed %d", error); | 83 | log_debug(ls, "dlm_recover_members error %d", error); |
85 | goto fail; | 84 | goto fail; |
86 | } | 85 | } |
86 | |||
87 | dlm_set_recover_status(ls, DLM_RS_NODES); | ||
88 | |||
89 | error = dlm_recover_members_wait(ls); | ||
90 | if (error) { | ||
91 | log_debug(ls, "dlm_recover_members_wait error %d", error); | ||
92 | goto fail; | ||
93 | } | ||
94 | |||
87 | start = jiffies; | 95 | start = jiffies; |
88 | 96 | ||
89 | /* | 97 | /* |
@@ -93,17 +101,15 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
93 | 101 | ||
94 | error = dlm_recover_directory(ls); | 102 | error = dlm_recover_directory(ls); |
95 | if (error) { | 103 | if (error) { |
96 | log_debug(ls, "recover_directory failed %d", error); | 104 | log_debug(ls, "dlm_recover_directory error %d", error); |
97 | goto fail; | 105 | goto fail; |
98 | } | 106 | } |
99 | 107 | ||
100 | /* | 108 | dlm_set_recover_status(ls, DLM_RS_DIR); |
101 | * Wait for all nodes to complete directory rebuild. | ||
102 | */ | ||
103 | 109 | ||
104 | error = dlm_recover_directory_wait(ls); | 110 | error = dlm_recover_directory_wait(ls); |
105 | if (error) { | 111 | if (error) { |
106 | log_debug(ls, "recover_directory_wait failed %d", error); | 112 | log_debug(ls, "dlm_recover_directory_wait error %d", error); |
107 | goto fail; | 113 | goto fail; |
108 | } | 114 | } |
109 | 115 | ||
@@ -133,7 +139,7 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
133 | 139 | ||
134 | error = dlm_recover_masters(ls); | 140 | error = dlm_recover_masters(ls); |
135 | if (error) { | 141 | if (error) { |
136 | log_debug(ls, "recover_masters failed %d", error); | 142 | log_debug(ls, "dlm_recover_masters error %d", error); |
137 | goto fail; | 143 | goto fail; |
138 | } | 144 | } |
139 | 145 | ||
@@ -143,13 +149,15 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
143 | 149 | ||
144 | error = dlm_recover_locks(ls); | 150 | error = dlm_recover_locks(ls); |
145 | if (error) { | 151 | if (error) { |
146 | log_debug(ls, "recover_locks failed %d", error); | 152 | log_debug(ls, "dlm_recover_locks error %d", error); |
147 | goto fail; | 153 | goto fail; |
148 | } | 154 | } |
149 | 155 | ||
156 | dlm_set_recover_status(ls, DLM_RS_LOCKS); | ||
157 | |||
150 | error = dlm_recover_locks_wait(ls); | 158 | error = dlm_recover_locks_wait(ls); |
151 | if (error) { | 159 | if (error) { |
152 | log_debug(ls, "recover_locks_wait failed %d", error); | 160 | log_debug(ls, "dlm_recover_locks_wait error %d", error); |
153 | goto fail; | 161 | goto fail; |
154 | } | 162 | } |
155 | 163 | ||
@@ -170,7 +178,7 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
170 | 178 | ||
171 | error = dlm_recover_locks_wait(ls); | 179 | error = dlm_recover_locks_wait(ls); |
172 | if (error) { | 180 | if (error) { |
173 | log_debug(ls, "recover_locks_wait failed %d", error); | 181 | log_debug(ls, "dlm_recover_locks_wait error %d", error); |
174 | goto fail; | 182 | goto fail; |
175 | } | 183 | } |
176 | } | 184 | } |
@@ -186,9 +194,10 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
186 | dlm_purge_requestqueue(ls); | 194 | dlm_purge_requestqueue(ls); |
187 | 195 | ||
188 | dlm_set_recover_status(ls, DLM_RS_DONE); | 196 | dlm_set_recover_status(ls, DLM_RS_DONE); |
197 | |||
189 | error = dlm_recover_done_wait(ls); | 198 | error = dlm_recover_done_wait(ls); |
190 | if (error) { | 199 | if (error) { |
191 | log_debug(ls, "recover_done_wait failed %d", error); | 200 | log_debug(ls, "dlm_recover_done_wait error %d", error); |
192 | goto fail; | 201 | goto fail; |
193 | } | 202 | } |
194 | 203 | ||
@@ -200,25 +209,25 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
200 | 209 | ||
201 | error = enable_locking(ls, rv->seq); | 210 | error = enable_locking(ls, rv->seq); |
202 | if (error) { | 211 | if (error) { |
203 | log_debug(ls, "enable_locking failed %d", error); | 212 | log_debug(ls, "enable_locking error %d", error); |
204 | goto fail; | 213 | goto fail; |
205 | } | 214 | } |
206 | 215 | ||
207 | error = dlm_process_requestqueue(ls); | 216 | error = dlm_process_requestqueue(ls); |
208 | if (error) { | 217 | if (error) { |
209 | log_debug(ls, "process_requestqueue failed %d", error); | 218 | log_debug(ls, "dlm_process_requestqueue error %d", error); |
210 | goto fail; | 219 | goto fail; |
211 | } | 220 | } |
212 | 221 | ||
213 | error = dlm_recover_waiters_post(ls); | 222 | error = dlm_recover_waiters_post(ls); |
214 | if (error) { | 223 | if (error) { |
215 | log_debug(ls, "recover_waiters_post failed %d", error); | 224 | log_debug(ls, "dlm_recover_waiters_post error %d", error); |
216 | goto fail; | 225 | goto fail; |
217 | } | 226 | } |
218 | 227 | ||
219 | dlm_grant_after_purge(ls); | 228 | dlm_grant_after_purge(ls); |
220 | 229 | ||
221 | log_debug(ls, "recover %llx done: %u ms", | 230 | log_debug(ls, "dlm_recover %llx done: %u ms", |
222 | (unsigned long long)rv->seq, | 231 | (unsigned long long)rv->seq, |
223 | jiffies_to_msecs(jiffies - start)); | 232 | jiffies_to_msecs(jiffies - start)); |
224 | mutex_unlock(&ls->ls_recoverd_active); | 233 | mutex_unlock(&ls->ls_recoverd_active); |
@@ -227,7 +236,7 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) | |||
227 | 236 | ||
228 | fail: | 237 | fail: |
229 | dlm_release_root_list(ls); | 238 | dlm_release_root_list(ls); |
230 | log_debug(ls, "recover %llx error %d", | 239 | log_debug(ls, "dlm_recover %llx error %d", |
231 | (unsigned long long)rv->seq, error); | 240 | (unsigned long long)rv->seq, error); |
232 | mutex_unlock(&ls->ls_recoverd_active); | 241 | mutex_unlock(&ls->ls_recoverd_active); |
233 | return error; | 242 | return error; |