Commit 7f5ddcc8d3eaccd5e169fda738530f937509645e
Committed by
Linus Torvalds
1 parent
8307fc257c
Exists in
master
and in
20 other branches
fault-injection: use debugfs_remove_recursive
Use debugfs_remove_recursive() to simplify initialization and deinitialization of fault injection debugfs files. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 4 changed files with 30 additions and 107 deletions Side-by-side Diff
include/linux/fault-inject.h
... | ... | @@ -27,23 +27,7 @@ |
27 | 27 | unsigned long count; |
28 | 28 | |
29 | 29 | #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS |
30 | - | |
31 | - struct { | |
32 | - struct dentry *dir; | |
33 | - | |
34 | - struct dentry *probability_file; | |
35 | - struct dentry *interval_file; | |
36 | - struct dentry *times_file; | |
37 | - struct dentry *space_file; | |
38 | - struct dentry *verbose_file; | |
39 | - struct dentry *task_filter_file; | |
40 | - struct dentry *stacktrace_depth_file; | |
41 | - struct dentry *require_start_file; | |
42 | - struct dentry *require_end_file; | |
43 | - struct dentry *reject_start_file; | |
44 | - struct dentry *reject_end_file; | |
45 | - } dentries; | |
46 | - | |
30 | + struct dentry *dir; | |
47 | 31 | #endif |
48 | 32 | }; |
49 | 33 |
lib/fault-inject.c
... | ... | @@ -199,48 +199,7 @@ |
199 | 199 | |
200 | 200 | void cleanup_fault_attr_dentries(struct fault_attr *attr) |
201 | 201 | { |
202 | - debugfs_remove(attr->dentries.probability_file); | |
203 | - attr->dentries.probability_file = NULL; | |
204 | - | |
205 | - debugfs_remove(attr->dentries.interval_file); | |
206 | - attr->dentries.interval_file = NULL; | |
207 | - | |
208 | - debugfs_remove(attr->dentries.times_file); | |
209 | - attr->dentries.times_file = NULL; | |
210 | - | |
211 | - debugfs_remove(attr->dentries.space_file); | |
212 | - attr->dentries.space_file = NULL; | |
213 | - | |
214 | - debugfs_remove(attr->dentries.verbose_file); | |
215 | - attr->dentries.verbose_file = NULL; | |
216 | - | |
217 | - debugfs_remove(attr->dentries.task_filter_file); | |
218 | - attr->dentries.task_filter_file = NULL; | |
219 | - | |
220 | -#ifdef CONFIG_FAULT_INJECTION_STACKTRACE_FILTER | |
221 | - | |
222 | - debugfs_remove(attr->dentries.stacktrace_depth_file); | |
223 | - attr->dentries.stacktrace_depth_file = NULL; | |
224 | - | |
225 | - debugfs_remove(attr->dentries.require_start_file); | |
226 | - attr->dentries.require_start_file = NULL; | |
227 | - | |
228 | - debugfs_remove(attr->dentries.require_end_file); | |
229 | - attr->dentries.require_end_file = NULL; | |
230 | - | |
231 | - debugfs_remove(attr->dentries.reject_start_file); | |
232 | - attr->dentries.reject_start_file = NULL; | |
233 | - | |
234 | - debugfs_remove(attr->dentries.reject_end_file); | |
235 | - attr->dentries.reject_end_file = NULL; | |
236 | - | |
237 | -#endif /* CONFIG_FAULT_INJECTION_STACKTRACE_FILTER */ | |
238 | - | |
239 | - if (attr->dentries.dir) | |
240 | - WARN_ON(!simple_empty(attr->dentries.dir)); | |
241 | - | |
242 | - debugfs_remove(attr->dentries.dir); | |
243 | - attr->dentries.dir = NULL; | |
202 | + debugfs_remove_recursive(attr->dir); | |
244 | 203 | } |
245 | 204 | |
246 | 205 | int init_fault_attr_dentries(struct fault_attr *attr, const char *name) |
247 | 206 | |
248 | 207 | |
249 | 208 | |
250 | 209 | |
251 | 210 | |
252 | 211 | |
253 | 212 | |
... | ... | @@ -248,66 +207,46 @@ |
248 | 207 | mode_t mode = S_IFREG | S_IRUSR | S_IWUSR; |
249 | 208 | struct dentry *dir; |
250 | 209 | |
251 | - memset(&attr->dentries, 0, sizeof(attr->dentries)); | |
252 | - | |
253 | 210 | dir = debugfs_create_dir(name, NULL); |
254 | 211 | if (!dir) |
255 | - goto fail; | |
256 | - attr->dentries.dir = dir; | |
212 | + return -ENOMEM; | |
257 | 213 | |
258 | - attr->dentries.probability_file = | |
259 | - debugfs_create_ul("probability", mode, dir, &attr->probability); | |
214 | + attr->dir = dir; | |
260 | 215 | |
261 | - attr->dentries.interval_file = | |
262 | - debugfs_create_ul("interval", mode, dir, &attr->interval); | |
263 | - | |
264 | - attr->dentries.times_file = | |
265 | - debugfs_create_atomic_t("times", mode, dir, &attr->times); | |
266 | - | |
267 | - attr->dentries.space_file = | |
268 | - debugfs_create_atomic_t("space", mode, dir, &attr->space); | |
269 | - | |
270 | - attr->dentries.verbose_file = | |
271 | - debugfs_create_ul("verbose", mode, dir, &attr->verbose); | |
272 | - | |
273 | - attr->dentries.task_filter_file = debugfs_create_bool("task-filter", | |
274 | - mode, dir, &attr->task_filter); | |
275 | - | |
276 | - if (!attr->dentries.probability_file || !attr->dentries.interval_file || | |
277 | - !attr->dentries.times_file || !attr->dentries.space_file || | |
278 | - !attr->dentries.verbose_file || !attr->dentries.task_filter_file) | |
216 | + if (!debugfs_create_ul("probability", mode, dir, &attr->probability)) | |
279 | 217 | goto fail; |
218 | + if (!debugfs_create_ul("interval", mode, dir, &attr->interval)) | |
219 | + goto fail; | |
220 | + if (!debugfs_create_atomic_t("times", mode, dir, &attr->times)) | |
221 | + goto fail; | |
222 | + if (!debugfs_create_atomic_t("space", mode, dir, &attr->space)) | |
223 | + goto fail; | |
224 | + if (!debugfs_create_ul("verbose", mode, dir, &attr->verbose)) | |
225 | + goto fail; | |
226 | + if (!debugfs_create_bool("task-filter", mode, dir, &attr->task_filter)) | |
227 | + goto fail; | |
280 | 228 | |
281 | 229 | #ifdef CONFIG_FAULT_INJECTION_STACKTRACE_FILTER |
282 | 230 | |
283 | - attr->dentries.stacktrace_depth_file = | |
284 | - debugfs_create_stacktrace_depth( | |
285 | - "stacktrace-depth", mode, dir, &attr->stacktrace_depth); | |
286 | - | |
287 | - attr->dentries.require_start_file = | |
288 | - debugfs_create_ul("require-start", mode, dir, &attr->require_start); | |
289 | - | |
290 | - attr->dentries.require_end_file = | |
291 | - debugfs_create_ul("require-end", mode, dir, &attr->require_end); | |
292 | - | |
293 | - attr->dentries.reject_start_file = | |
294 | - debugfs_create_ul("reject-start", mode, dir, &attr->reject_start); | |
295 | - | |
296 | - attr->dentries.reject_end_file = | |
297 | - debugfs_create_ul("reject-end", mode, dir, &attr->reject_end); | |
298 | - | |
299 | - if (!attr->dentries.stacktrace_depth_file || | |
300 | - !attr->dentries.require_start_file || | |
301 | - !attr->dentries.require_end_file || | |
302 | - !attr->dentries.reject_start_file || | |
303 | - !attr->dentries.reject_end_file) | |
231 | + if (!debugfs_create_stacktrace_depth("stacktrace-depth", mode, dir, | |
232 | + &attr->stacktrace_depth)) | |
304 | 233 | goto fail; |
234 | + if (!debugfs_create_ul("require-start", mode, dir, | |
235 | + &attr->require_start)) | |
236 | + goto fail; | |
237 | + if (!debugfs_create_ul("require-end", mode, dir, &attr->require_end)) | |
238 | + goto fail; | |
239 | + if (!debugfs_create_ul("reject-start", mode, dir, &attr->reject_start)) | |
240 | + goto fail; | |
241 | + if (!debugfs_create_ul("reject-end", mode, dir, &attr->reject_end)) | |
242 | + goto fail; | |
305 | 243 | |
306 | 244 | #endif /* CONFIG_FAULT_INJECTION_STACKTRACE_FILTER */ |
307 | 245 | |
308 | 246 | return 0; |
309 | 247 | fail: |
310 | - cleanup_fault_attr_dentries(attr); | |
248 | + debugfs_remove_recursive(attr->dir); | |
249 | + | |
311 | 250 | return -ENOMEM; |
312 | 251 | } |
313 | 252 |
mm/failslab.c
mm/page_alloc.c
... | ... | @@ -1424,7 +1424,7 @@ |
1424 | 1424 | "fail_page_alloc"); |
1425 | 1425 | if (err) |
1426 | 1426 | return err; |
1427 | - dir = fail_page_alloc.attr.dentries.dir; | |
1427 | + dir = fail_page_alloc.attr.dir; | |
1428 | 1428 | |
1429 | 1429 | fail_page_alloc.ignore_gfp_wait_file = |
1430 | 1430 | debugfs_create_bool("ignore-gfp-wait", mode, dir, |