diff options
Diffstat (limited to 'lib/fault-inject.c')
| -rw-r--r-- | lib/fault-inject.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/fault-inject.c b/lib/fault-inject.c index d7d501ea856d..f1cdeb024d17 100644 --- a/lib/fault-inject.c +++ b/lib/fault-inject.c | |||
| @@ -40,10 +40,16 @@ EXPORT_SYMBOL_GPL(setup_fault_attr); | |||
| 40 | 40 | ||
| 41 | static void fail_dump(struct fault_attr *attr) | 41 | static void fail_dump(struct fault_attr *attr) |
| 42 | { | 42 | { |
| 43 | if (attr->verbose > 0) | 43 | if (attr->verbose > 0 && __ratelimit(&attr->ratelimit_state)) { |
| 44 | printk(KERN_NOTICE "FAULT_INJECTION: forcing a failure\n"); | 44 | printk(KERN_NOTICE "FAULT_INJECTION: forcing a failure.\n" |
| 45 | if (attr->verbose > 1) | 45 | "name %pd, interval %lu, probability %lu, " |
| 46 | dump_stack(); | 46 | "space %d, times %d\n", attr->dname, |
| 47 | attr->probability, attr->interval, | ||
| 48 | atomic_read(&attr->space), | ||
| 49 | atomic_read(&attr->times)); | ||
| 50 | if (attr->verbose > 1) | ||
| 51 | dump_stack(); | ||
| 52 | } | ||
| 47 | } | 53 | } |
| 48 | 54 | ||
| 49 | #define atomic_dec_not_zero(v) atomic_add_unless((v), -1, 0) | 55 | #define atomic_dec_not_zero(v) atomic_add_unless((v), -1, 0) |
| @@ -202,6 +208,12 @@ struct dentry *fault_create_debugfs_attr(const char *name, | |||
| 202 | goto fail; | 208 | goto fail; |
| 203 | if (!debugfs_create_ul("verbose", mode, dir, &attr->verbose)) | 209 | if (!debugfs_create_ul("verbose", mode, dir, &attr->verbose)) |
| 204 | goto fail; | 210 | goto fail; |
| 211 | if (!debugfs_create_u32("verbose_ratelimit_interval_ms", mode, dir, | ||
| 212 | &attr->ratelimit_state.interval)) | ||
| 213 | goto fail; | ||
| 214 | if (!debugfs_create_u32("verbose_ratelimit_burst", mode, dir, | ||
| 215 | &attr->ratelimit_state.burst)) | ||
| 216 | goto fail; | ||
| 205 | if (!debugfs_create_bool("task-filter", mode, dir, &attr->task_filter)) | 217 | if (!debugfs_create_bool("task-filter", mode, dir, &attr->task_filter)) |
| 206 | goto fail; | 218 | goto fail; |
| 207 | 219 | ||
| @@ -222,6 +234,7 @@ struct dentry *fault_create_debugfs_attr(const char *name, | |||
| 222 | 234 | ||
| 223 | #endif /* CONFIG_FAULT_INJECTION_STACKTRACE_FILTER */ | 235 | #endif /* CONFIG_FAULT_INJECTION_STACKTRACE_FILTER */ |
| 224 | 236 | ||
| 237 | attr->dname = dget(dir); | ||
| 225 | return dir; | 238 | return dir; |
| 226 | fail: | 239 | fail: |
| 227 | debugfs_remove_recursive(dir); | 240 | debugfs_remove_recursive(dir); |
