mirror of https://gitee.com/openkylin/linux.git
mm/hugetlb.c: replace memfmt with string_get_size
The hugetlb code has its own function to report human-readable sizes. Convert it to use the shared string_get_size() function. This will lead to a minor difference in user visible output (MiB/GiB instead of MB/GB), but some would argue that's desirable anyway. Link: http://lkml.kernel.org/r/20170606190350.GA20010@bombadil.infradead.org Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Cc: Liam R. Howlett <Liam.Howlett@Oracle.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com> Cc: zhong jiang <zhongjiang@huawei.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6a1a8b8072
commit
c6247f72d4
19
mm/hugetlb.c
19
mm/hugetlb.c
|
@ -20,6 +20,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/sched/signal.h>
|
#include <linux/sched/signal.h>
|
||||||
#include <linux/rmap.h>
|
#include <linux/rmap.h>
|
||||||
|
#include <linux/string_helpers.h>
|
||||||
#include <linux/swap.h>
|
#include <linux/swap.h>
|
||||||
#include <linux/swapops.h>
|
#include <linux/swapops.h>
|
||||||
#include <linux/jhash.h>
|
#include <linux/jhash.h>
|
||||||
|
@ -70,17 +71,6 @@ struct mutex *hugetlb_fault_mutex_table ____cacheline_aligned_in_smp;
|
||||||
/* Forward declaration */
|
/* Forward declaration */
|
||||||
static int hugetlb_acct_memory(struct hstate *h, long delta);
|
static int hugetlb_acct_memory(struct hstate *h, long delta);
|
||||||
|
|
||||||
static char * __init memfmt(char *buf, unsigned long n)
|
|
||||||
{
|
|
||||||
if (n >= (1UL << 30))
|
|
||||||
sprintf(buf, "%lu GB", n >> 30);
|
|
||||||
else if (n >= (1UL << 20))
|
|
||||||
sprintf(buf, "%lu MB", n >> 20);
|
|
||||||
else
|
|
||||||
sprintf(buf, "%lu KB", n >> 10);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void unlock_or_release_subpool(struct hugepage_subpool *spool)
|
static inline void unlock_or_release_subpool(struct hugepage_subpool *spool)
|
||||||
{
|
{
|
||||||
bool free = (spool->count == 0) && (spool->used_hpages == 0);
|
bool free = (spool->count == 0) && (spool->used_hpages == 0);
|
||||||
|
@ -2255,7 +2245,7 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h)
|
||||||
if (i < h->max_huge_pages) {
|
if (i < h->max_huge_pages) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
||||||
memfmt(buf, huge_page_size(h)),
|
string_get_size(huge_page_size(h), 1, STRING_UNITS_2, buf, 32);
|
||||||
pr_warn("HugeTLB: allocating %lu of page size %s failed. Only allocated %lu hugepages.\n",
|
pr_warn("HugeTLB: allocating %lu of page size %s failed. Only allocated %lu hugepages.\n",
|
||||||
h->max_huge_pages, buf, i);
|
h->max_huge_pages, buf, i);
|
||||||
h->max_huge_pages = i;
|
h->max_huge_pages = i;
|
||||||
|
@ -2283,9 +2273,10 @@ static void __init report_hugepages(void)
|
||||||
|
|
||||||
for_each_hstate(h) {
|
for_each_hstate(h) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
||||||
|
string_get_size(huge_page_size(h), 1, STRING_UNITS_2, buf, 32);
|
||||||
pr_info("HugeTLB registered %s page size, pre-allocated %ld pages\n",
|
pr_info("HugeTLB registered %s page size, pre-allocated %ld pages\n",
|
||||||
memfmt(buf, huge_page_size(h)),
|
buf, h->free_huge_pages);
|
||||||
h->free_huge_pages);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue