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)
247 static void flakey_map_bio(struct dm_target *ti, struct bio *bio) in flakey_map_bio() argument
251 bio->bi_bdev = fc->dev->bdev; in flakey_map_bio()
252 if (bio_sectors(bio)) in flakey_map_bio()
253 bio->bi_iter.bi_sector = in flakey_map_bio()
254 flakey_map_sector(ti, bio->bi_iter.bi_sector); in flakey_map_bio()
257 static void corrupt_bio_data(struct bio *bio, struct flakey_c *fc) in corrupt_bio_data() argument
259 unsigned bio_bytes = bio_cur_bytes(bio); in corrupt_bio_data()
260 char *data = bio_data(bio); in corrupt_bio_data()
270 bio, fc->corrupt_bio_value, fc->corrupt_bio_byte, in corrupt_bio_data()
271 (bio_data_dir(bio) == WRITE) ? 'w' : 'r', bio->bi_rw, in corrupt_bio_data()
272 (unsigned long long)bio->bi_iter.bi_sector, bio_bytes); in corrupt_bio_data()
276 static int flakey_map(struct dm_target *ti, struct bio *bio) in flakey_map() argument
280 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in flakey_map()
294 if (bio_data_dir(bio) == READ) in flakey_map()
301 bio_endio(bio); in flakey_map()
309 if (all_corrupt_bio_flags_match(bio, fc)) in flakey_map()
310 corrupt_bio_data(bio, fc); in flakey_map()
321 flakey_map_bio(ti, bio); in flakey_map()
326 static int flakey_end_io(struct dm_target *ti, struct bio *bio, int error) in flakey_end_io() argument
329 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in flakey_end_io()
336 (bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) && in flakey_end_io()
337 all_corrupt_bio_flags_match(bio, fc)) in flakey_end_io()
338 corrupt_bio_data(bio, fc); in flakey_end_io()