Lines Matching refs:resv_map
255 static long region_add(struct resv_map *resv, long f, long t) in region_add()
351 static long region_chg(struct resv_map *resv, long f, long t) in region_chg()
456 static void region_abort(struct resv_map *resv, long f, long t) in region_abort()
478 static long region_del(struct resv_map *resv, long f, long t) in region_del()
585 static long region_count(struct resv_map *resv, long f, long t) in region_count()
698 struct resv_map *resv_map_alloc(void) in resv_map_alloc()
700 struct resv_map *resv_map = kmalloc(sizeof(*resv_map), GFP_KERNEL); in resv_map_alloc() local
703 if (!resv_map || !rg) { in resv_map_alloc()
704 kfree(resv_map); in resv_map_alloc()
709 kref_init(&resv_map->refs); in resv_map_alloc()
710 spin_lock_init(&resv_map->lock); in resv_map_alloc()
711 INIT_LIST_HEAD(&resv_map->regions); in resv_map_alloc()
713 resv_map->adds_in_progress = 0; in resv_map_alloc()
715 INIT_LIST_HEAD(&resv_map->region_cache); in resv_map_alloc()
716 list_add(&rg->link, &resv_map->region_cache); in resv_map_alloc()
717 resv_map->region_cache_count = 1; in resv_map_alloc()
719 return resv_map; in resv_map_alloc()
724 struct resv_map *resv_map = container_of(ref, struct resv_map, refs); in resv_map_release() local
725 struct list_head *head = &resv_map->region_cache; in resv_map_release()
729 region_del(resv_map, 0, LONG_MAX); in resv_map_release()
737 VM_BUG_ON(resv_map->adds_in_progress); in resv_map_release()
739 kfree(resv_map); in resv_map_release()
742 static inline struct resv_map *inode_resv_map(struct inode *inode) in inode_resv_map()
747 static struct resv_map *vma_resv_map(struct vm_area_struct *vma) in vma_resv_map()
757 return (struct resv_map *)(get_vma_private_data(vma) & in vma_resv_map()
762 static void set_vma_resv_map(struct vm_area_struct *vma, struct resv_map *map) in set_vma_resv_map()
1788 struct resv_map *resv; in __vma_reservation_common()
2963 struct resv_map *resv = vma_resv_map(vma); in hugetlb_vm_op_open()
2980 struct resv_map *resv = vma_resv_map(vma); in hugetlb_vm_op_close()
4007 struct resv_map *resv_map; in hugetlb_reserve_pages() local
4025 resv_map = inode_resv_map(inode); in hugetlb_reserve_pages()
4027 chg = region_chg(resv_map, from, to); in hugetlb_reserve_pages()
4030 resv_map = resv_map_alloc(); in hugetlb_reserve_pages()
4031 if (!resv_map) in hugetlb_reserve_pages()
4036 set_vma_resv_map(vma, resv_map); in hugetlb_reserve_pages()
4079 long add = region_add(resv_map, from, to); in hugetlb_reserve_pages()
4099 region_abort(resv_map, from, to); in hugetlb_reserve_pages()
4101 kref_put(&resv_map->refs, resv_map_release); in hugetlb_reserve_pages()
4109 struct resv_map *resv_map = inode_resv_map(inode); in hugetlb_unreserve_pages() local
4114 if (resv_map) { in hugetlb_unreserve_pages()
4115 chg = region_del(resv_map, start, end); in hugetlb_unreserve_pages()