Lines Matching refs:re

94 			     struct reada_extent *re, struct extent_buffer *eb,  in __readahead_hook()  argument
103 spin_lock(&re->lock); in __readahead_hook()
108 list_replace_init(&re->extctl, &list); in __readahead_hook()
109 re->scheduled = 0; in __readahead_hook()
110 spin_unlock(&re->lock); in __readahead_hook()
142 next_key = re->top; in __readahead_hook()
191 reada_extent_put(fs_info, re); /* one ref for each entry */ in __readahead_hook()
201 struct reada_extent *re; in btree_readahead_hook() local
205 re = radix_tree_lookup(&fs_info->reada_tree, in btree_readahead_hook()
207 if (re) in btree_readahead_hook()
208 re->refcnt++; in btree_readahead_hook()
210 if (!re) { 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()
303 struct reada_extent *re = NULL; in reada_find_extent() local
316 re = radix_tree_lookup(&fs_info->reada_tree, index); in reada_find_extent()
317 if (re) in reada_find_extent()
318 re->refcnt++; in reada_find_extent()
321 if (re) in reada_find_extent()
322 return re; in reada_find_extent()
324 re = kzalloc(sizeof(*re), GFP_KERNEL); in reada_find_extent()
325 if (!re) in reada_find_extent()
328 re->logical = logical; in reada_find_extent()
329 re->top = *top; in reada_find_extent()
330 INIT_LIST_HEAD(&re->extctl); in reada_find_extent()
331 spin_lock_init(&re->lock); in reada_find_extent()
332 re->refcnt = 1; in reada_find_extent()
364 re->zones[re->nzones++] = zone; in reada_find_extent()
374 if (re->nzones == 0) { in reada_find_extent()
386 ret = radix_tree_insert(&fs_info->reada_tree, index, re); in reada_find_extent()
405 for (nzones = 0; nzones < re->nzones; ++nzones) { in reada_find_extent()
406 dev = re->zones[nzones]->device; in reada_find_extent()
430 ret = radix_tree_insert(&dev->reada_extents, index, re); in reada_find_extent()
433 dev = re->zones[nzones]->device; in reada_find_extent()
452 return re; in reada_find_extent()
455 for (nzones = 0; nzones < re->nzones; ++nzones) { in reada_find_extent()
458 zone = re->zones[nzones]; in reada_find_extent()
476 kfree(re); in reada_find_extent()
481 struct reada_extent *re) in reada_extent_put() argument
484 unsigned long index = re->logical >> PAGE_SHIFT; in reada_extent_put()
487 if (--re->refcnt) { in reada_extent_put()
493 for (i = 0; i < re->nzones; ++i) { in reada_extent_put()
494 struct reada_zone *zone = re->zones[i]; in reada_extent_put()
501 for (i = 0; i < re->nzones; ++i) { in reada_extent_put()
502 struct reada_zone *zone = re->zones[i]; in reada_extent_put()
519 kfree(re); in reada_extent_put()
544 struct reada_extent *re; in reada_add_block() local
548 re = reada_find_extent(fs_info, logical, top); in reada_add_block()
549 if (!re) in reada_add_block()
554 reada_extent_put(fs_info, re); in reada_add_block()
562 spin_lock(&re->lock); in reada_add_block()
563 list_add_tail(&rec->list, &re->extctl); in reada_add_block()
564 spin_unlock(&re->lock); in reada_add_block()
642 struct reada_extent *re = NULL; in reada_start_machine_dev() local
662 ret = radix_tree_gang_lookup(&dev->reada_extents, (void **)&re, in reada_start_machine_dev()
664 if (ret == 0 || re->logical > dev->reada_curr_zone->end) { in reada_start_machine_dev()
670 re = NULL; in reada_start_machine_dev()
671 ret = radix_tree_gang_lookup(&dev->reada_extents, (void **)&re, in reada_start_machine_dev()
678 dev->reada_next = re->logical + fs_info->nodesize; in reada_start_machine_dev()
679 re->refcnt++; in reada_start_machine_dev()
683 spin_lock(&re->lock); in reada_start_machine_dev()
684 if (re->scheduled || list_empty(&re->extctl)) { in reada_start_machine_dev()
685 spin_unlock(&re->lock); in reada_start_machine_dev()
686 reada_extent_put(fs_info, re); in reada_start_machine_dev()
689 re->scheduled = 1; in reada_start_machine_dev()
690 spin_unlock(&re->lock); in reada_start_machine_dev()
695 for (i = 0; i < re->nzones; ++i) { in reada_start_machine_dev()
696 if (re->zones[i]->device == dev) { in reada_start_machine_dev()
701 logical = re->logical; 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()
833 struct reada_extent *re = NULL; in dump_devs() local
836 (void **)&re, index, 1); in dump_devs()
840 re->logical, fs_info->nodesize, in dump_devs()
841 list_empty(&re->extctl), re->scheduled); in dump_devs()
843 for (i = 0; i < re->nzones; ++i) { in dump_devs()
845 re->zones[i]->start, in dump_devs()
846 re->zones[i]->end); in dump_devs()
847 for (j = 0; j < re->zones[i]->ndevs; ++j) { in dump_devs()
849 re->zones[i]->devs[j]->devid); in dump_devs()
853 index = (re->logical >> PAGE_SHIFT) + 1; in dump_devs()
862 struct reada_extent *re = NULL; in dump_devs() local
864 ret = radix_tree_gang_lookup(&fs_info->reada_tree, (void **)&re, in dump_devs()
868 if (!re->scheduled) { in dump_devs()
869 index = (re->logical >> PAGE_SHIFT) + 1; in dump_devs()
873 re->logical, fs_info->nodesize, in dump_devs()
874 list_empty(&re->extctl), re->scheduled); in dump_devs()
875 for (i = 0; i < re->nzones; ++i) { in dump_devs()
877 re->zones[i]->start, in dump_devs()
878 re->zones[i]->end); in dump_devs()
879 for (j = 0; j < re->zones[i]->ndevs; ++j) { in dump_devs()
881 re->zones[i]->devs[j]->devid); in dump_devs()
885 index = (re->logical >> PAGE_SHIFT) + 1; in dump_devs()