Lines Matching refs:conf

94 static int check_mode(struct faulty_conf *conf, int mode)  in check_mode()  argument
96 if (conf->period[mode] == 0 && in check_mode()
97 atomic_read(&conf->counters[mode]) <= 0) in check_mode()
101 if (atomic_dec_and_test(&conf->counters[mode])) { in check_mode()
102 if (conf->period[mode]) in check_mode()
103 atomic_set(&conf->counters[mode], conf->period[mode]); in check_mode()
109 static int check_sector(struct faulty_conf *conf, sector_t start, sector_t end, int dir) in check_sector() argument
113 for (i=0; i<conf->nfaults; i++) in check_sector()
114 if (conf->faults[i] >= start && in check_sector()
115 conf->faults[i] < end) { in check_sector()
117 switch (conf->modes[i] * 2 + dir) { in check_sector()
122 conf->modes[i] = NoPersist; in check_sector()
133 static void add_sector(struct faulty_conf *conf, sector_t start, int mode) in add_sector() argument
136 int n = conf->nfaults; in add_sector()
137 for (i=0; i<conf->nfaults; i++) in add_sector()
138 if (conf->faults[i] == start) { in add_sector()
140 case NoPersist: conf->modes[i] = mode; return; in add_sector()
142 if (conf->modes[i] == ReadPersistent || in add_sector()
143 conf->modes[i] == ReadFixable) in add_sector()
144 conf->modes[i] = AllPersist; in add_sector()
146 conf->modes[i] = WritePersistent; in add_sector()
149 if (conf->modes[i] == WritePersistent) in add_sector()
150 conf->modes[i] = AllPersist; in add_sector()
152 conf->modes[i] = ReadPersistent; in add_sector()
155 if (conf->modes[i] == WritePersistent || in add_sector()
156 conf->modes[i] == ReadPersistent) in add_sector()
157 conf->modes[i] = AllPersist; in add_sector()
159 conf->modes[i] = ReadFixable; in add_sector()
162 } else if (conf->modes[i] == NoPersist) in add_sector()
167 conf->faults[n] = start; in add_sector()
168 conf->modes[n] = mode; in add_sector()
169 if (conf->nfaults == n) in add_sector()
170 conf->nfaults = n+1; in add_sector()
175 struct faulty_conf *conf = mddev->private; in make_request() local
180 if (atomic_read(&conf->counters[WriteAll])) { in make_request()
188 if (check_sector(conf, bio->bi_iter.bi_sector, in make_request()
191 if (check_mode(conf, WritePersistent)) { in make_request()
192 add_sector(conf, bio->bi_iter.bi_sector, in make_request()
196 if (check_mode(conf, WriteTransient)) in make_request()
200 if (check_sector(conf, bio->bi_iter.bi_sector, in make_request()
203 if (check_mode(conf, ReadTransient)) in make_request()
205 if (check_mode(conf, ReadPersistent)) { in make_request()
206 add_sector(conf, bio->bi_iter.bi_sector, in make_request()
210 if (check_mode(conf, ReadFixable)) { in make_request()
211 add_sector(conf, bio->bi_iter.bi_sector, in make_request()
219 b->bi_bdev = conf->rdev->bdev; in make_request()
224 bio->bi_bdev = conf->rdev->bdev; in make_request()
231 struct faulty_conf *conf = mddev->private; in status() local
234 if ((n=atomic_read(&conf->counters[WriteTransient])) != 0) in status()
236 n, conf->period[WriteTransient]); in status()
238 if ((n=atomic_read(&conf->counters[ReadTransient])) != 0) in status()
240 n, conf->period[ReadTransient]); in status()
242 if ((n=atomic_read(&conf->counters[WritePersistent])) != 0) in status()
244 n, conf->period[WritePersistent]); in status()
246 if ((n=atomic_read(&conf->counters[ReadPersistent])) != 0) in status()
248 n, conf->period[ReadPersistent]); in status()
251 if ((n=atomic_read(&conf->counters[ReadFixable])) != 0) in status()
253 n, conf->period[ReadFixable]); in status()
255 if ((n=atomic_read(&conf->counters[WriteAll])) != 0) in status()
258 seq_printf(seq, " nfaults=%d", conf->nfaults); in status()
266 struct faulty_conf *conf = mddev->private; in reshape() local
273 conf->nfaults = 0; in reshape()
277 conf->period[i] = 0; in reshape()
278 atomic_set(&conf->counters[i], 0); in reshape()
281 conf->period[mode] = count; in reshape()
283 atomic_set(&conf->counters[mode], count); in reshape()
306 struct faulty_conf *conf; in run() local
311 conf = kmalloc(sizeof(*conf), GFP_KERNEL); in run()
312 if (!conf) in run()
316 atomic_set(&conf->counters[i], 0); in run()
317 conf->period[i] = 0; in run()
319 conf->nfaults = 0; in run()
322 conf->rdev = rdev; in run()
328 mddev->private = conf; in run()
337 struct faulty_conf *conf = priv; in faulty_free() local
339 kfree(conf); in faulty_free()