hugetlbfs: per mount huge page sizes
[pandora-kernel.git] / include / linux / hugetlb.h
index b75bdb4..ba9263e 100644 (file)
@@ -100,6 +100,7 @@ struct hugetlbfs_config {
        umode_t mode;
        long    nr_blocks;
        long    nr_inodes;
+       struct hstate *hstate;
 };
 
 struct hugetlbfs_sb_info {
@@ -108,6 +109,7 @@ struct hugetlbfs_sb_info {
        long    max_inodes;   /* inodes allowed */
        long    free_inodes;  /* inodes free */
        spinlock_t      stat_lock;
+       struct hstate *hstate;
 };
 
 
@@ -191,19 +193,21 @@ extern unsigned int default_hstate_idx;
 
 #define default_hstate (hstates[default_hstate_idx])
 
-static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
+static inline struct hstate *hstate_inode(struct inode *i)
 {
-       return &default_hstate;
+       struct hugetlbfs_sb_info *hsb;
+       hsb = HUGETLBFS_SB(i->i_sb);
+       return hsb->hstate;
 }
 
 static inline struct hstate *hstate_file(struct file *f)
 {
-       return &default_hstate;
+       return hstate_inode(f->f_dentry->d_inode);
 }
 
-static inline struct hstate *hstate_inode(struct inode *i)
+static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
 {
-       return &default_hstate;
+       return hstate_file(vma->vm_file);
 }
 
 static inline unsigned long huge_page_size(struct hstate *h)