Lines Matching refs:fs_info

80 	struct btrfs_fs_info	*fs_info;  member
86 static void reada_start_machine(struct btrfs_fs_info *fs_info);
87 static void __reada_start_machine(struct btrfs_fs_info *fs_info);
94 static void __readahead_hook(struct btrfs_fs_info *fs_info, in __readahead_hook() argument
159 btrfs_debug(fs_info, in __readahead_hook()
192 reada_extent_put(fs_info, re); /* one ref for each entry */ in __readahead_hook()
200 struct btrfs_fs_info *fs_info = eb->fs_info; in btree_readahead_hook() local
205 spin_lock(&fs_info->reada_lock); in btree_readahead_hook()
206 re = radix_tree_lookup(&fs_info->reada_tree, in btree_readahead_hook()
210 spin_unlock(&fs_info->reada_lock); in btree_readahead_hook()
216 __readahead_hook(fs_info, re, eb, err); in btree_readahead_hook()
217 reada_extent_put(fs_info, re); /* our ref */ in btree_readahead_hook()
220 reada_start_machine(fs_info); in btree_readahead_hook()
227 struct btrfs_fs_info *fs_info = dev->fs_info; in reada_find_zone() local
236 spin_lock(&fs_info->reada_lock); in reada_find_zone()
241 spin_unlock(&fs_info->reada_lock); in reada_find_zone()
245 spin_unlock(&fs_info->reada_lock); in reada_find_zone()
247 cache = btrfs_lookup_block_group(fs_info, logical); in reada_find_zone()
279 spin_lock(&fs_info->reada_lock); in reada_find_zone()
293 spin_unlock(&fs_info->reada_lock); in reada_find_zone()
299 static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info, in reada_find_extent() argument
316 spin_lock(&fs_info->reada_lock); in reada_find_extent()
317 re = radix_tree_lookup(&fs_info->reada_tree, index); in reada_find_extent()
320 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
338 length = fs_info->nodesize; in reada_find_extent()
339 ret = btrfs_map_block(fs_info, BTRFS_MAP_GET_READ_MIRRORS, logical, in reada_find_extent()
341 if (ret || !bbio || length < fs_info->nodesize) in reada_find_extent()
345 btrfs_err(fs_info, in reada_find_extent()
371 spin_lock(&fs_info->reada_lock); in reada_find_extent()
373 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
381 down_read(&fs_info->dev_replace.rwsem); in reada_find_extent()
384 up_read(&fs_info->dev_replace.rwsem); in reada_find_extent()
388 spin_lock(&fs_info->reada_lock); in reada_find_extent()
389 ret = radix_tree_insert(&fs_info->reada_tree, index, re); in reada_find_extent()
391 re_exist = radix_tree_lookup(&fs_info->reada_tree, index); in reada_find_extent()
393 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
395 up_read(&fs_info->dev_replace.rwsem); in reada_find_extent()
399 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
401 up_read(&fs_info->dev_replace.rwsem); in reada_find_extent()
407 &fs_info->dev_replace); in reada_find_extent()
425 dev == fs_info->dev_replace.tgtdev) { in reada_find_extent()
441 radix_tree_delete(&fs_info->reada_tree, index); in reada_find_extent()
442 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
443 up_read(&fs_info->dev_replace.rwsem); in reada_find_extent()
448 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
449 up_read(&fs_info->dev_replace.rwsem); in reada_find_extent()
474 spin_lock(&fs_info->reada_lock); in reada_find_extent()
476 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
483 static void reada_extent_put(struct btrfs_fs_info *fs_info, in reada_extent_put() argument
489 spin_lock(&fs_info->reada_lock); in reada_extent_put()
491 spin_unlock(&fs_info->reada_lock); in reada_extent_put()
495 radix_tree_delete(&fs_info->reada_tree, index); in reada_extent_put()
502 spin_unlock(&fs_info->reada_lock); in reada_extent_put()
517 spin_lock(&fs_info->reada_lock); in reada_extent_put()
519 spin_unlock(&fs_info->reada_lock); in reada_extent_put()
546 struct btrfs_fs_info *fs_info = rc->fs_info; in reada_add_block() local
551 re = reada_find_extent(fs_info, logical, top); in reada_add_block()
557 reada_extent_put(fs_info, re); in reada_add_block()
642 static int reada_tree_block_flagged(struct btrfs_fs_info *fs_info, u64 bytenr, in reada_tree_block_flagged() argument
648 buf = btrfs_find_create_tree_block(fs_info, bytenr); in reada_tree_block_flagged()
673 struct btrfs_fs_info *fs_info = dev->fs_info; in reada_start_machine_dev() local
681 spin_lock(&fs_info->reada_lock); in reada_start_machine_dev()
685 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
699 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
707 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
710 dev->reada_next = re->logical + fs_info->nodesize; in reada_start_machine_dev()
713 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
718 reada_extent_put(fs_info, re); in reada_start_machine_dev()
736 ret = reada_tree_block_flagged(fs_info, logical, mirror_num, &eb); in reada_start_machine_dev()
738 __readahead_hook(fs_info, re, NULL, ret); in reada_start_machine_dev()
740 __readahead_hook(fs_info, re, eb, ret); in reada_start_machine_dev()
746 reada_extent_put(fs_info, re); in reada_start_machine_dev()
755 struct btrfs_fs_info *fs_info; in reada_start_machine_worker() local
759 fs_info = rmw->fs_info; in reada_start_machine_worker()
766 __reada_start_machine(fs_info); in reada_start_machine_worker()
769 atomic_dec(&fs_info->reada_works_cnt); in reada_start_machine_worker()
772 static void __reada_start_machine(struct btrfs_fs_info *fs_info) in __reada_start_machine() argument
775 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in __reada_start_machine()
808 reada_start_machine(fs_info); in __reada_start_machine()
809 if (atomic_read(&fs_info->reada_works_cnt) > in __reada_start_machine()
815 static void reada_start_machine(struct btrfs_fs_info *fs_info) in reada_start_machine() argument
826 rmw->fs_info = fs_info; in reada_start_machine()
828 btrfs_queue_work(fs_info->readahead_workers, &rmw->work); in reada_start_machine()
829 atomic_inc(&fs_info->reada_works_cnt); in reada_start_machine()
833 static void dump_devs(struct btrfs_fs_info *fs_info, int all) in dump_devs() argument
836 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in dump_devs()
843 spin_lock(&fs_info->reada_lock); in dump_devs()
845 btrfs_debug(fs_info, "dev %lld has %d in flight", device->devid, in dump_devs()
877 re->logical, fs_info->nodesize, in dump_devs()
901 ret = radix_tree_gang_lookup(&fs_info->reada_tree, (void **)&re, in dump_devs()
910 re->logical, fs_info->nodesize, in dump_devs()
924 spin_unlock(&fs_info->reada_lock); in dump_devs()
949 rc->fs_info = root->fs_info; in btrfs_reada_add()
968 reada_start_machine(root->fs_info); in btrfs_reada_add()
977 struct btrfs_fs_info *fs_info = rc->fs_info; in btrfs_reada_wait() local
980 if (!atomic_read(&fs_info->reada_works_cnt)) in btrfs_reada_wait()
981 reada_start_machine(fs_info); in btrfs_reada_wait()
984 dump_devs(fs_info, atomic_read(&rc->elems) < 10 ? 1 : 0); in btrfs_reada_wait()
987 dump_devs(fs_info, atomic_read(&rc->elems) < 10 ? 1 : 0); in btrfs_reada_wait()
997 struct btrfs_fs_info *fs_info = rc->fs_info; in btrfs_reada_wait() local
1000 if (!atomic_read(&fs_info->reada_works_cnt)) in btrfs_reada_wait()
1001 reada_start_machine(fs_info); in btrfs_reada_wait()