Lines Matching refs:attr

18 int setup_fault_attr(struct fault_attr *attr, char *str)
33 attr->probability = probability;
34 attr->interval = interval;
35 atomic_set(&attr->times, times);
36 atomic_set(&attr->space, space);
42 static void fail_dump(struct fault_attr *attr)
44 if (attr->verbose > 0 && __ratelimit(&attr->ratelimit_state)) {
47 "space %d, times %d\n", attr->dname,
48 attr->interval, attr->probability,
49 atomic_read(&attr->space),
50 atomic_read(&attr->times));
51 if (attr->verbose > 1)
58 static bool fail_task(struct fault_attr *attr, struct task_struct *task)
67 static bool fail_stacktrace(struct fault_attr *attr)
69 int depth = attr->stacktrace_depth;
72 bool found = (attr->require_start == 0 && attr->require_end == ULONG_MAX);
74 if (depth == 0 || (found && !attr->reject_start && !attr->reject_end))
79 if (attr->reject_start <= entries[n] &&
80 entries[n] < attr->reject_end)
82 if (attr->require_start <= entries[n] &&
83 entries[n] < attr->require_end)
91 static inline bool fail_stacktrace(struct fault_attr *attr)
103 bool should_fail_ex(struct fault_attr *attr, ssize_t size, int flags)
111 if (!fail_stacktrace(attr))
125 if (attr->probability == 0)
128 if (attr->task_filter && !fail_task(attr, current))
131 if (atomic_read(&attr->times) == 0)
134 if (!stack_checked && !fail_stacktrace(attr))
137 if (atomic_read(&attr->space) > size) {
138 atomic_sub(size, &attr->space);
142 if (attr->interval > 1) {
143 attr->count++;
144 if (attr->count % attr->interval)
148 if (attr->probability <= get_random_u32_below(100))
153 fail_dump(attr);
155 if (atomic_read(&attr->times) != -1)
156 atomic_dec_not_zero(&attr->times);
161 bool should_fail(struct fault_attr *attr, ssize_t size)
163 return should_fail_ex(attr, size, 0);
212 struct dentry *parent, struct fault_attr *attr)
221 debugfs_create_ul("probability", mode, dir, &attr->probability);
222 debugfs_create_ul("interval", mode, dir, &attr->interval);
223 debugfs_create_atomic_t("times", mode, dir, &attr->times);
224 debugfs_create_atomic_t("space", mode, dir, &attr->space);
225 debugfs_create_ul("verbose", mode, dir, &attr->verbose);
227 &attr->ratelimit_state.interval);
229 &attr->ratelimit_state.burst);
230 debugfs_create_bool("task-filter", mode, dir, &attr->task_filter);
234 &attr->stacktrace_depth);
235 debugfs_create_xul("require-start", mode, dir, &attr->require_start);
236 debugfs_create_xul("require-end", mode, dir, &attr->require_end);
237 debugfs_create_xul("reject-start", mode, dir, &attr->reject_start);
238 debugfs_create_xul("reject-end", mode, dir, &attr->reject_end);
241 attr->dname = dget(dir);
341 return fault_##TYPE##_attr_show(to_fault_config(item)->attr.MEMBER, page); \
346 return fault_##TYPE##_attr_store(&config->attr.MEMBER, page, count); \
368 return fault_ulong_attr_show(to_fault_config(item)->attr.stacktrace_depth, page);
381 to_fault_config(item)->attr.stacktrace_depth =