Lines Matching full:fbio

137 static int next_repair_mirror(struct btrfs_failed_bio *fbio, int cur_mirror)  in next_repair_mirror()  argument
139 if (cur_mirror == fbio->num_copies) in next_repair_mirror()
140 return cur_mirror + 1 - fbio->num_copies; in next_repair_mirror()
144 static int prev_repair_mirror(struct btrfs_failed_bio *fbio, int cur_mirror) in prev_repair_mirror() argument
147 return fbio->num_copies; in prev_repair_mirror()
151 static void btrfs_repair_done(struct btrfs_failed_bio *fbio) in btrfs_repair_done() argument
153 if (atomic_dec_and_test(&fbio->repair_count)) { in btrfs_repair_done()
154 btrfs_bio_end_io(fbio->bbio, fbio->bbio->bio.bi_status); in btrfs_repair_done()
155 mempool_free(fbio, &btrfs_failed_bio_pool); in btrfs_repair_done()
162 struct btrfs_failed_bio *fbio = repair_bbio->private; in btrfs_end_repair_bio() local
179 mirror = next_repair_mirror(fbio, mirror); in btrfs_end_repair_bio()
180 if (mirror == fbio->bbio->mirror_num) { in btrfs_end_repair_bio()
182 fbio->bbio->bio.bi_status = BLK_STS_IOERR; in btrfs_end_repair_bio()
191 mirror = prev_repair_mirror(fbio, mirror); in btrfs_end_repair_bio()
196 } while (mirror != fbio->bbio->mirror_num); in btrfs_end_repair_bio()
199 btrfs_repair_done(fbio); in btrfs_end_repair_bio()
213 struct btrfs_failed_bio *fbio) in repair_one_sector() argument
231 return fbio; in repair_one_sector()
234 if (!fbio) { in repair_one_sector()
235 fbio = mempool_alloc(&btrfs_failed_bio_pool, GFP_NOFS); in repair_one_sector()
236 fbio->bbio = failed_bbio; in repair_one_sector()
237 fbio->num_copies = num_copies; in repair_one_sector()
238 atomic_set(&fbio->repair_count, 1); in repair_one_sector()
241 atomic_inc(&fbio->repair_count); in repair_one_sector()
249 btrfs_bio_init(repair_bbio, fs_info, NULL, fbio); in repair_one_sector()
253 mirror = next_repair_mirror(fbio, failed_bbio->mirror_num); in repair_one_sector()
256 return fbio; in repair_one_sector()
266 struct btrfs_failed_bio *fbio = NULL; in btrfs_check_read_bio() local
289 fbio = repair_one_sector(bbio, offset, &bv, fbio); in btrfs_check_read_bio()
298 if (fbio) in btrfs_check_read_bio()
299 btrfs_repair_done(fbio); in btrfs_check_read_bio()