Use list head in hugetlbfs inode instead of mapping->private_list since that will go away. Signed-off-by: Jan Kara <jack@xxxxxxx> --- fs/hugetlbfs/inode.c | 8 +++++++- mm/hugetlb.c | 14 +++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index d19b30ababf1..d345d0f4873a 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -52,6 +52,7 @@ struct hugetlbfs_config { struct hugetlbfs_inode_info { struct shared_policy policy; + struct list_head region_list; struct inode vfs_inode; }; @@ -60,6 +61,11 @@ static inline struct hugetlbfs_inode_info *HUGETLBFS_I(struct inode *inode) return container_of(inode, struct hugetlbfs_inode_info, vfs_inode); } +struct list_head *hugetlb_region_list(struct inode *inode) +{ + return &HUGETLBFS_I(inode)->region_list; +} + static struct backing_dev_info hugetlbfs_backing_dev_info = { .name = "hugetlbfs", .ra_pages = 0, /* No readahead */ @@ -487,7 +493,6 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb, inode->i_mapping->a_ops = &hugetlbfs_aops; inode->i_mapping->backing_dev_info =&hugetlbfs_backing_dev_info; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; - INIT_LIST_HEAD(&inode->i_mapping->private_list); info = HUGETLBFS_I(inode); /* * The policy is initialized here even if we are creating a @@ -710,6 +715,7 @@ static void init_once(void *foo) struct hugetlbfs_inode_info *ei = (struct hugetlbfs_inode_info *)foo; inode_init_once(&ei->vfs_inode); + INIT_LIST_HEAD(&ei->region_list); } const struct file_operations hugetlbfs_file_operations = { diff --git a/mm/hugetlb.c b/mm/hugetlb.c index c01cb9fedb18..046a93e1df23 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -47,6 +47,8 @@ static struct hstate * __initdata parsed_hstate; static unsigned long __initdata default_hstate_max_huge_pages; static unsigned long __initdata default_hstate_size; +extern struct list_head *hugetlb_region_list(struct inode *inode); + /* * Protects updates to hugepage_freelists, hugepage_activelist, nr_huge_pages, * free_huge_pages, and surplus_huge_pages. @@ -1155,9 +1157,7 @@ static long vma_needs_reservation(struct hstate *h, if (vma->vm_flags & VM_MAYSHARE) { pgoff_t idx = vma_hugecache_offset(h, vma, addr); - return region_chg(&inode->i_mapping->private_list, - idx, idx + 1); - + return region_chg(hugetlb_region_list(inode), idx, idx + 1); } else if (!is_vma_resv_set(vma, HPAGE_RESV_OWNER)) { return 1; @@ -1180,7 +1180,7 @@ static void vma_commit_reservation(struct hstate *h, if (vma->vm_flags & VM_MAYSHARE) { pgoff_t idx = vma_hugecache_offset(h, vma, addr); - region_add(&inode->i_mapping->private_list, idx, idx + 1); + region_add(hugetlb_region_list(inode), idx, idx + 1); } else if (is_vma_resv_set(vma, HPAGE_RESV_OWNER)) { pgoff_t idx = vma_hugecache_offset(h, vma, addr); @@ -3177,7 +3177,7 @@ int hugetlb_reserve_pages(struct inode *inode, * called to make the mapping read-write. Assume !vma is a shm mapping */ if (!vma || vma->vm_flags & VM_MAYSHARE) - chg = region_chg(&inode->i_mapping->private_list, from, to); + chg = region_chg(hugetlb_region_list(inode), from, to); else { struct resv_map *resv_map = resv_map_alloc(); if (!resv_map) @@ -3222,7 +3222,7 @@ int hugetlb_reserve_pages(struct inode *inode, * else has to be done for private mappings here */ if (!vma || vma->vm_flags & VM_MAYSHARE) - region_add(&inode->i_mapping->private_list, from, to); + region_add(hugetlb_region_list(inode), from, to); return 0; out_err: if (vma) @@ -3233,7 +3233,7 @@ out_err: void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed) { struct hstate *h = hstate_inode(inode); - long chg = region_truncate(&inode->i_mapping->private_list, offset); + long chg = region_truncate(hugetlb_region_list(inode), offset); struct hugepage_subpool *spool = subpool_inode(inode); spin_lock(&inode->i_lock); -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html