Lines Matching defs:resv_map

246 /* Helper that removes a struct file_region from the resv_map cache and returns
250 get_file_region_entry_from_cache(struct resv_map *resv, long from, long to)
280 struct resv_map *resv,
302 * a resv_map.
333 static void coalesce_file_region(struct resv_map *resv, struct file_region *rg)
368 static long add_reservation_in_range(struct resv_map *resv, long f, long t,
441 static int allocate_file_region_entries(struct resv_map *resv,
514 static long region_add(struct resv_map *resv, long f, long t,
530 * than in_regions_needed, as the resv_map may have been modified since
582 static long region_chg(struct resv_map *resv, long f, long t,
607 * of the resv_map keeps track of the operations in progress between
618 static void region_abort(struct resv_map *resv, long f, long t,
641 static long region_del(struct resv_map *resv, long f, long t)
768 static long region_count(struct resv_map *resv, long f, long t)
876 resv_map_set_hugetlb_cgroup_uncharge_info(struct resv_map *resv_map,
882 resv_map->reservation_counter = NULL;
883 resv_map->pages_per_hpage = 0;
884 resv_map->css = NULL;
886 resv_map->reservation_counter =
888 resv_map->pages_per_hpage = pages_per_huge_page(h);
889 resv_map->css = &h_cg->css;
894 struct resv_map *resv_map_alloc(void)
896 struct resv_map *resv_map = kmalloc(sizeof(*resv_map), GFP_KERNEL);
899 if (!resv_map || !rg) {
900 kfree(resv_map);
905 kref_init(&resv_map->refs);
906 spin_lock_init(&resv_map->lock);
907 INIT_LIST_HEAD(&resv_map->regions);
909 resv_map->adds_in_progress = 0;
916 resv_map_set_hugetlb_cgroup_uncharge_info(resv_map, NULL, NULL);
918 INIT_LIST_HEAD(&resv_map->region_cache);
919 list_add(&rg->link, &resv_map->region_cache);
920 resv_map->region_cache_count = 1;
922 return resv_map;
927 struct resv_map *resv_map = container_of(ref, struct resv_map, refs);
928 struct list_head *head = &resv_map->region_cache;
932 region_del(resv_map, 0, LONG_MAX);
940 VM_BUG_ON(resv_map->adds_in_progress);
942 kfree(resv_map);
945 static inline struct resv_map *inode_resv_map(struct inode *inode)
950 * contains the pointer to the resv_map. So, always use the
955 return (struct resv_map *)(&inode->i_data)->private_data;
958 static struct resv_map *vma_resv_map(struct vm_area_struct *vma)
968 return (struct resv_map *)(get_vma_private_data(vma) &
973 static void set_vma_resv_map(struct vm_area_struct *vma, struct resv_map *map)
2200 struct resv_map *resv;
3671 struct resv_map *resv = vma_resv_map(vma);
3690 struct resv_map *resv = vma_resv_map(vma);
5138 struct resv_map *resv_map;
5164 * resv_map can not be NULL as hugetlb_reserve_pages is only
5168 resv_map = inode_resv_map(inode);
5170 chg = region_chg(resv_map, from, to, &regions_needed);
5174 resv_map = resv_map_alloc();
5175 if (!resv_map)
5180 set_vma_resv_map(vma, resv_map);
5199 * of the resv_map.
5201 resv_map_set_hugetlb_cgroup_uncharge_info(resv_map, h_cg, h);
5236 add = region_add(resv_map, from, to, regions_needed, h, h_cg);
5286 region_abort(resv_map, from, to, regions_needed);
5288 kref_put(&resv_map->refs, resv_map_release);
5296 struct resv_map *resv_map = inode_resv_map(inode);
5303 * hugetlbfs inodes, resv_map could be NULL.
5305 if (resv_map) {
5306 chg = region_del(resv_map, start, end);