Lines Matching full:fbio

145 static int next_repair_mirror(struct btrfs_failed_bio *fbio, int cur_mirror)  in next_repair_mirror()  argument
147 if (cur_mirror == fbio->num_copies) in next_repair_mirror()
148 return cur_mirror + 1 - fbio->num_copies; in next_repair_mirror()
152 static int prev_repair_mirror(struct btrfs_failed_bio *fbio, int cur_mirror) in prev_repair_mirror() argument
155 return fbio->num_copies; in prev_repair_mirror()
159 static void btrfs_repair_done(struct btrfs_failed_bio *fbio) in btrfs_repair_done() argument
161 if (atomic_dec_and_test(&fbio->repair_count)) { in btrfs_repair_done()
162 btrfs_bio_end_io(fbio->bbio, fbio->bbio->bio.bi_status); in btrfs_repair_done()
163 mempool_free(fbio, &btrfs_failed_bio_pool); in btrfs_repair_done()
170 struct btrfs_failed_bio *fbio = repair_bbio->private; in btrfs_end_repair_bio() local
187 mirror = next_repair_mirror(fbio, mirror); in btrfs_end_repair_bio()
188 if (mirror == fbio->bbio->mirror_num) { in btrfs_end_repair_bio()
190 fbio->bbio->bio.bi_status = BLK_STS_IOERR; in btrfs_end_repair_bio()
199 mirror = prev_repair_mirror(fbio, mirror); in btrfs_end_repair_bio()
204 } while (mirror != fbio->bbio->mirror_num); in btrfs_end_repair_bio()
207 btrfs_repair_done(fbio); in btrfs_end_repair_bio()
221 struct btrfs_failed_bio *fbio) in repair_one_sector() argument
239 return fbio; in repair_one_sector()
242 if (!fbio) { in repair_one_sector()
243 fbio = mempool_alloc(&btrfs_failed_bio_pool, GFP_NOFS); in repair_one_sector()
244 fbio->bbio = failed_bbio; in repair_one_sector()
245 fbio->num_copies = num_copies; in repair_one_sector()
246 atomic_set(&fbio->repair_count, 1); in repair_one_sector()
249 atomic_inc(&fbio->repair_count); in repair_one_sector()
257 btrfs_bio_init(repair_bbio, fs_info, NULL, fbio); in repair_one_sector()
261 mirror = next_repair_mirror(fbio, failed_bbio->mirror_num); in repair_one_sector()
264 return fbio; in repair_one_sector()
274 struct btrfs_failed_bio *fbio = NULL; in btrfs_check_read_bio() local
297 fbio = repair_one_sector(bbio, offset, &bv, fbio); in btrfs_check_read_bio()
306 if (fbio) in btrfs_check_read_bio()
307 btrfs_repair_done(fbio); in btrfs_check_read_bio()