Lines Matching refs:fs
10 #include "fs-api-private.h"
21 struct fs fs;
41 static struct fs *fs_randomfail_alloc(void)
43 struct randomfail_fs *fs;
45 fs = i_new(struct randomfail_fs, 1);
46 fs->fs = fs_class_randomfail;
47 return &fs->fs;
64 fs_randomfail_add_probability(struct randomfail_fs *fs,
79 fs->op_probability[op] = num;
88 fs->op_probability[op] = num;
95 fs_randomfail_add_probability_range(struct randomfail_fs *fs,
124 fs->range_start[op] = num1;
125 fs->range_end[op] = num2;
129 static int fs_randomfail_parse_params(struct randomfail_fs *fs,
144 if ((ret = fs_randomfail_add_probability(fs, key, value, error_r)) != 0) {
149 if ((ret = fs_randomfail_add_probability_range(fs, key, value, error_r)) != 0) {
161 fs_randomfail_init(struct fs *_fs, const char *args,
164 struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
172 if (fs_randomfail_parse_params(fs, t_strdup_until(args, p++), &error) < 0) {
198 static void fs_randomfail_deinit(struct fs *_fs)
200 struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
204 i_free(fs);
207 static enum fs_properties fs_randomfail_get_properties(struct fs *_fs)
237 static bool fs_random_fail(struct fs *_fs, int divider, enum fs_op op)
239 struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
241 if (fs->op_probability[op] == 0)
243 if ((unsigned int)i_rand_limit(100 * divider) <= fs->op_probability[op]) {
255 if (fs_random_fail(file->file.fs, 2, op))
267 if (fs_random_fail(file->file.fs, 2, op))
275 fs_random_fail_range(struct fs *_fs, enum fs_op op, uoff_t *offset_r)
277 struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
281 *offset_r = i_rand_minmax(fs->range_start[op], fs->range_end[op]);
300 if (fs_random_fail(_file->fs, 1, FS_OP_PREFETCH))
325 if (!fs_random_fail_range(_file->fs, FS_OP_READ, &offset))
351 if (!fs_random_fail_range(_file->fs, FS_OP_WRITE, &offset))
372 if (fs_random_fail(_file->fs, 1, FS_OP_WRITE)) {
383 if (fs_random_fail(_file->fs, 1, FS_OP_LOCK))
477 if (fs_random_fail_range(_iter->fs, FS_OP_ITER, &pos))
507 fs_set_error(_iter->fs, RANDOMFAIL_ERROR);
515 const struct fs fs_class_randomfail = {