Lines Matching refs:re
116 struct reada_extent *re; in __readahead_hook() local
127 re = radix_tree_lookup(&fs_info->reada_tree, index); in __readahead_hook()
128 if (re) in __readahead_hook()
129 re->refcnt++; in __readahead_hook()
132 if (!re) in __readahead_hook()
135 spin_lock(&re->lock); in __readahead_hook()
140 list_replace_init(&re->extctl, &list); in __readahead_hook()
141 for_dev = re->scheduled_for; in __readahead_hook()
142 re->scheduled_for = NULL; in __readahead_hook()
143 spin_unlock(&re->lock); in __readahead_hook()
175 next_key = re->top; in __readahead_hook()
223 reada_extent_put(fs_info, re); /* one ref for each entry */ in __readahead_hook()
225 reada_extent_put(fs_info, re); /* our ref */ in __readahead_hook()
323 struct reada_extent *re = NULL; in reada_find_extent() local
338 re = radix_tree_lookup(&fs_info->reada_tree, index); in reada_find_extent()
339 if (re) in reada_find_extent()
340 re->refcnt++; in reada_find_extent()
343 if (re) in reada_find_extent()
344 return re; in reada_find_extent()
346 re = kzalloc(sizeof(*re), GFP_NOFS); in reada_find_extent()
347 if (!re) in reada_find_extent()
351 re->logical = logical; in reada_find_extent()
352 re->top = *top; in reada_find_extent()
353 INIT_LIST_HEAD(&re->extctl); in reada_find_extent()
354 spin_lock_init(&re->lock); in reada_find_extent()
355 re->refcnt = 1; in reada_find_extent()
382 re->zones[nzones] = zone; in reada_find_extent()
392 re->nzones = nzones; in reada_find_extent()
401 ret = radix_tree_insert(&fs_info->reada_tree, index, re); in reada_find_extent()
448 ret = radix_tree_insert(&dev->reada_extents, index, re); in reada_find_extent()
467 return re; in reada_find_extent()
474 zone = re->zones[nzones]; in reada_find_extent()
492 kfree(re); in reada_find_extent()
497 struct reada_extent *re) in reada_extent_put() argument
500 unsigned long index = re->logical >> PAGE_CACHE_SHIFT; in reada_extent_put()
503 if (--re->refcnt) { in reada_extent_put()
509 for (i = 0; i < re->nzones; ++i) { in reada_extent_put()
510 struct reada_zone *zone = re->zones[i]; in reada_extent_put()
517 for (i = 0; i < re->nzones; ++i) { in reada_extent_put()
518 struct reada_zone *zone = re->zones[i]; in reada_extent_put()
534 if (re->scheduled_for) in reada_extent_put()
535 atomic_dec(&re->scheduled_for->reada_in_flight); in reada_extent_put()
537 kfree(re); in reada_extent_put()
562 struct reada_extent *re; in reada_add_block() local
565 re = reada_find_extent(root, logical, top, level); /* takes one ref */ in reada_add_block()
566 if (!re) in reada_add_block()
571 reada_extent_put(root->fs_info, re); in reada_add_block()
579 spin_lock(&re->lock); in reada_add_block()
580 list_add_tail(&rec->list, &re->extctl); in reada_add_block()
581 spin_unlock(&re->lock); in reada_add_block()
659 struct reada_extent *re = NULL; in reada_start_machine_dev() local
680 ret = radix_tree_gang_lookup(&dev->reada_extents, (void **)&re, in reada_start_machine_dev()
682 if (ret == 0 || re->logical >= dev->reada_curr_zone->end) { in reada_start_machine_dev()
688 re = NULL; in reada_start_machine_dev()
689 ret = radix_tree_gang_lookup(&dev->reada_extents, (void **)&re, in reada_start_machine_dev()
696 dev->reada_next = re->logical + fs_info->tree_root->nodesize; in reada_start_machine_dev()
697 re->refcnt++; in reada_start_machine_dev()
704 for (i = 0; i < re->nzones; ++i) { in reada_start_machine_dev()
705 if (re->zones[i]->device == dev) { in reada_start_machine_dev()
710 logical = re->logical; in reada_start_machine_dev()
712 spin_lock(&re->lock); in reada_start_machine_dev()
713 if (re->scheduled_for == NULL) { in reada_start_machine_dev()
714 re->scheduled_for = dev; in reada_start_machine_dev()
717 spin_unlock(&re->lock); in reada_start_machine_dev()
719 reada_extent_put(fs_info, re); in reada_start_machine_dev()
844 struct reada_extent *re = NULL; in dump_devs() local
847 (void **)&re, index, 1); in dump_devs()
852 re->logical, fs_info->tree_root->nodesize, in dump_devs()
853 list_empty(&re->extctl), re->scheduled_for ? in dump_devs()
854 re->scheduled_for->devid : -1); in dump_devs()
856 for (i = 0; i < re->nzones; ++i) { in dump_devs()
858 re->zones[i]->start, in dump_devs()
859 re->zones[i]->end); in dump_devs()
860 for (j = 0; j < re->zones[i]->ndevs; ++j) { in dump_devs()
862 re->zones[i]->devs[j]->devid); in dump_devs()
866 index = (re->logical >> PAGE_CACHE_SHIFT) + 1; in dump_devs()
875 struct reada_extent *re = NULL; in dump_devs() local
877 ret = radix_tree_gang_lookup(&fs_info->reada_tree, (void **)&re, in dump_devs()
881 if (!re->scheduled_for) { in dump_devs()
882 index = (re->logical >> PAGE_CACHE_SHIFT) + 1; in dump_devs()
887 re->logical, fs_info->tree_root->nodesize, in dump_devs()
888 list_empty(&re->extctl), in dump_devs()
889 re->scheduled_for ? re->scheduled_for->devid : -1); in dump_devs()
890 for (i = 0; i < re->nzones; ++i) { in dump_devs()
892 re->zones[i]->start, in dump_devs()
893 re->zones[i]->end); in dump_devs()
894 for (i = 0; i < re->nzones; ++i) { in dump_devs()
896 re->zones[i]->start, in dump_devs()
897 re->zones[i]->end); in dump_devs()
898 for (j = 0; j < re->zones[i]->ndevs; ++j) { in dump_devs()
900 re->zones[i]->devs[j]->devid); in dump_devs()
905 index = (re->logical >> PAGE_CACHE_SHIFT) + 1; in dump_devs()