mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
mm, hugetlb: unify region structure handling
Currently, to track reserved and allocated regions, we use two different ways, depending on the mapping. For MAP_SHARED, we use address_mapping's private_list and, while for MAP_PRIVATE, we use a resv_map. Now, we are preparing to change a coarse grained lock which protect a region structure to fine grained lock, and this difference hinder it. So, before changing it, unify region structure handling, consistently using a resv_map regardless of the kind of mapping. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Signed-off-by: Davidlohr Bueso <davidlohr@hp.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d26914d117
commit
9119a41e90
3 changed files with 45 additions and 18 deletions
|
@ -6,6 +6,8 @@
|
|||
#include <linux/fs.h>
|
||||
#include <linux/hugetlb_inline.h>
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/kref.h>
|
||||
|
||||
struct ctl_table;
|
||||
struct user_struct;
|
||||
|
@ -23,6 +25,13 @@ struct hugepage_subpool {
|
|||
long max_hpages, used_hpages;
|
||||
};
|
||||
|
||||
struct resv_map {
|
||||
struct kref refs;
|
||||
struct list_head regions;
|
||||
};
|
||||
extern struct resv_map *resv_map_alloc(void);
|
||||
void resv_map_release(struct kref *ref);
|
||||
|
||||
extern spinlock_t hugetlb_lock;
|
||||
extern int hugetlb_max_hstate __read_mostly;
|
||||
#define for_each_hstate(h) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue