Lines Matching refs:bio
18 #define all_corrupt_bio_flags_match(bio, fc) \ argument
19 (((bio)->bi_rw & (fc)->corrupt_bio_flags) == (fc)->corrupt_bio_flags)
245 static void flakey_map_bio(struct dm_target *ti, struct bio *bio) in flakey_map_bio() argument
249 bio->bi_bdev = fc->dev->bdev; in flakey_map_bio()
250 if (bio_sectors(bio)) in flakey_map_bio()
251 bio->bi_iter.bi_sector = in flakey_map_bio()
252 flakey_map_sector(ti, bio->bi_iter.bi_sector); in flakey_map_bio()
255 static void corrupt_bio_data(struct bio *bio, struct flakey_c *fc) in corrupt_bio_data() argument
257 unsigned bio_bytes = bio_cur_bytes(bio); in corrupt_bio_data()
258 char *data = bio_data(bio); in corrupt_bio_data()
268 bio, fc->corrupt_bio_value, fc->corrupt_bio_byte, in corrupt_bio_data()
269 (bio_data_dir(bio) == WRITE) ? 'w' : 'r', bio->bi_rw, in corrupt_bio_data()
270 (unsigned long long)bio->bi_iter.bi_sector, bio_bytes); in corrupt_bio_data()
274 static int flakey_map(struct dm_target *ti, struct bio *bio) in flakey_map() argument
278 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in flakey_map()
292 if (bio_data_dir(bio) == READ) in flakey_map()
299 bio_endio(bio, 0); in flakey_map()
307 if (all_corrupt_bio_flags_match(bio, fc)) in flakey_map()
308 corrupt_bio_data(bio, fc); in flakey_map()
319 flakey_map_bio(ti, bio); in flakey_map()
324 static int flakey_end_io(struct dm_target *ti, struct bio *bio, int error) in flakey_end_io() argument
327 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in flakey_end_io()
334 (bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) && in flakey_end_io()
335 all_corrupt_bio_flags_match(bio, fc)) in flakey_end_io()
336 corrupt_bio_data(bio, fc); in flakey_end_io()