Lines Matching refs:fs_info

79 	struct btrfs_fs_info	*fs_info;  member
85 static void reada_start_machine(struct btrfs_fs_info *fs_info);
86 static void __reada_start_machine(struct btrfs_fs_info *fs_info);
93 static void __readahead_hook(struct btrfs_fs_info *fs_info, in __readahead_hook() argument
158 btrfs_debug(fs_info, in __readahead_hook()
191 reada_extent_put(fs_info, re); /* one ref for each entry */ in __readahead_hook()
199 struct btrfs_fs_info *fs_info = eb->fs_info; in btree_readahead_hook() local
204 spin_lock(&fs_info->reada_lock); in btree_readahead_hook()
205 re = radix_tree_lookup(&fs_info->reada_tree, in btree_readahead_hook()
209 spin_unlock(&fs_info->reada_lock); in btree_readahead_hook()
215 __readahead_hook(fs_info, re, eb, err); in btree_readahead_hook()
216 reada_extent_put(fs_info, re); /* our ref */ in btree_readahead_hook()
219 reada_start_machine(fs_info); in btree_readahead_hook()
226 struct btrfs_fs_info *fs_info = dev->fs_info; in reada_find_zone() local
235 spin_lock(&fs_info->reada_lock); in reada_find_zone()
240 spin_unlock(&fs_info->reada_lock); in reada_find_zone()
244 spin_unlock(&fs_info->reada_lock); in reada_find_zone()
246 cache = btrfs_lookup_block_group(fs_info, logical); in reada_find_zone()
278 spin_lock(&fs_info->reada_lock); in reada_find_zone()
292 spin_unlock(&fs_info->reada_lock); in reada_find_zone()
298 static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info, in reada_find_extent() argument
315 spin_lock(&fs_info->reada_lock); in reada_find_extent()
316 re = radix_tree_lookup(&fs_info->reada_tree, index); in reada_find_extent()
319 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
337 length = fs_info->nodesize; in reada_find_extent()
338 ret = btrfs_map_block(fs_info, BTRFS_MAP_GET_READ_MIRRORS, logical, in reada_find_extent()
340 if (ret || !bbio || length < fs_info->nodesize) in reada_find_extent()
344 btrfs_err(fs_info, in reada_find_extent()
370 spin_lock(&fs_info->reada_lock); in reada_find_extent()
372 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
384 btrfs_dev_replace_read_lock(&fs_info->dev_replace); in reada_find_extent()
385 spin_lock(&fs_info->reada_lock); in reada_find_extent()
386 ret = radix_tree_insert(&fs_info->reada_tree, index, re); in reada_find_extent()
388 re_exist = radix_tree_lookup(&fs_info->reada_tree, index); in reada_find_extent()
390 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
391 btrfs_dev_replace_read_unlock(&fs_info->dev_replace); in reada_find_extent()
396 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
397 btrfs_dev_replace_read_unlock(&fs_info->dev_replace); in reada_find_extent()
404 &fs_info->dev_replace); in reada_find_extent()
422 dev == fs_info->dev_replace.tgtdev) { in reada_find_extent()
438 radix_tree_delete(&fs_info->reada_tree, index); in reada_find_extent()
439 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
440 btrfs_dev_replace_read_unlock(&fs_info->dev_replace); in reada_find_extent()
445 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
446 btrfs_dev_replace_read_unlock(&fs_info->dev_replace); in reada_find_extent()
471 spin_lock(&fs_info->reada_lock); in reada_find_extent()
473 spin_unlock(&fs_info->reada_lock); in reada_find_extent()
480 static void reada_extent_put(struct btrfs_fs_info *fs_info, in reada_extent_put() argument
486 spin_lock(&fs_info->reada_lock); in reada_extent_put()
488 spin_unlock(&fs_info->reada_lock); in reada_extent_put()
492 radix_tree_delete(&fs_info->reada_tree, index); in reada_extent_put()
499 spin_unlock(&fs_info->reada_lock); in reada_extent_put()
514 spin_lock(&fs_info->reada_lock); in reada_extent_put()
516 spin_unlock(&fs_info->reada_lock); in reada_extent_put()
543 struct btrfs_fs_info *fs_info = rc->fs_info; in reada_add_block() local
548 re = reada_find_extent(fs_info, logical, top); in reada_add_block()
554 reada_extent_put(fs_info, re); in reada_add_block()
641 struct btrfs_fs_info *fs_info = dev->fs_info; in reada_start_machine_dev() local
649 spin_lock(&fs_info->reada_lock); in reada_start_machine_dev()
653 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
667 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
675 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
678 dev->reada_next = re->logical + fs_info->nodesize; in reada_start_machine_dev()
681 spin_unlock(&fs_info->reada_lock); in reada_start_machine_dev()
686 reada_extent_put(fs_info, re); in reada_start_machine_dev()
704 ret = reada_tree_block_flagged(fs_info, logical, mirror_num, &eb); in reada_start_machine_dev()
706 __readahead_hook(fs_info, re, NULL, ret); in reada_start_machine_dev()
708 __readahead_hook(fs_info, re, eb, ret); in reada_start_machine_dev()
714 reada_extent_put(fs_info, re); in reada_start_machine_dev()
723 struct btrfs_fs_info *fs_info; in reada_start_machine_worker() local
727 fs_info = rmw->fs_info; in reada_start_machine_worker()
734 __reada_start_machine(fs_info); in reada_start_machine_worker()
737 atomic_dec(&fs_info->reada_works_cnt); in reada_start_machine_worker()
740 static void __reada_start_machine(struct btrfs_fs_info *fs_info) in __reada_start_machine() argument
743 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in __reada_start_machine()
771 reada_start_machine(fs_info); in __reada_start_machine()
772 if (atomic_read(&fs_info->reada_works_cnt) > in __reada_start_machine()
778 static void reada_start_machine(struct btrfs_fs_info *fs_info) in reada_start_machine() argument
789 rmw->fs_info = fs_info; in reada_start_machine()
791 btrfs_queue_work(fs_info->readahead_workers, &rmw->work); in reada_start_machine()
792 atomic_inc(&fs_info->reada_works_cnt); in reada_start_machine()
796 static void dump_devs(struct btrfs_fs_info *fs_info, int all) in dump_devs() argument
799 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in dump_devs()
806 spin_lock(&fs_info->reada_lock); in dump_devs()
808 btrfs_debug(fs_info, "dev %lld has %d in flight", device->devid, in dump_devs()
840 re->logical, fs_info->nodesize, in dump_devs()
864 ret = radix_tree_gang_lookup(&fs_info->reada_tree, (void **)&re, in dump_devs()
873 re->logical, fs_info->nodesize, in dump_devs()
887 spin_unlock(&fs_info->reada_lock); in dump_devs()
912 rc->fs_info = root->fs_info; in btrfs_reada_add()
931 reada_start_machine(root->fs_info); in btrfs_reada_add()
940 struct btrfs_fs_info *fs_info = rc->fs_info; in btrfs_reada_wait() local
943 if (!atomic_read(&fs_info->reada_works_cnt)) in btrfs_reada_wait()
944 reada_start_machine(fs_info); in btrfs_reada_wait()
947 dump_devs(fs_info, atomic_read(&rc->elems) < 10 ? 1 : 0); in btrfs_reada_wait()
950 dump_devs(fs_info, atomic_read(&rc->elems) < 10 ? 1 : 0); in btrfs_reada_wait()
960 struct btrfs_fs_info *fs_info = rc->fs_info; in btrfs_reada_wait() local
963 if (!atomic_read(&fs_info->reada_works_cnt)) in btrfs_reada_wait()
964 reada_start_machine(fs_info); in btrfs_reada_wait()