Hi Naoya, On Thu, Aug 22, 2013 at 11:52:52AM -0400, Naoya Horiguchi wrote: >On Thu, Aug 22, 2013 at 05:48:23PM +0800, Wanpeng Li wrote: >> compound lock is introduced by commit e9da73d67("thp: compound_lock."), >> it is used to serialize put_page against __split_huge_page_refcount(). >> In addition, transparent hugepages will be splitted in hwpoison handler >> and just one subpage will be poisoned. There is unnecessary to hold >> compound lock for hugetlbfs page. This patch replace compound_trans_order >> by compond_order in the place where the page is hugetlbfs page. >> >> Signed-off-by: Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx> >> --- >> mm/memory-failure.c | 10 +++++----- >> 1 file changed, 5 insertions(+), 5 deletions(-) >> >> diff --git a/mm/memory-failure.c b/mm/memory-failure.c >> index 2c13aa7..5092e06 100644 >> --- a/mm/memory-failure.c >> +++ b/mm/memory-failure.c >> @@ -206,7 +206,7 @@ static int kill_proc(struct task_struct *t, unsigned long addr, int trapno, >> #ifdef __ARCH_SI_TRAPNO >> si.si_trapno = trapno; >> #endif >> - si.si_addr_lsb = compound_trans_order(compound_head(page)) + PAGE_SHIFT; >> + si.si_addr_lsb = compound_order(compound_head(page)) + PAGE_SHIFT; >> >> if ((flags & MF_ACTION_REQUIRED) && t == current) { >> si.si_code = BUS_MCEERR_AR; >> @@ -983,7 +983,7 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn, >> static void set_page_hwpoison_huge_page(struct page *hpage) >> { >> int i; >> - int nr_pages = 1 << compound_trans_order(hpage); >> + int nr_pages = 1 << compound_order(hpage); >> for (i = 0; i < nr_pages; i++) >> SetPageHWPoison(hpage + i); >> } >> @@ -991,7 +991,7 @@ static void set_page_hwpoison_huge_page(struct page *hpage) >> static void clear_page_hwpoison_huge_page(struct page *hpage) >> { >> int i; >> - int nr_pages = 1 << compound_trans_order(hpage); >> + int nr_pages = 1 << compound_order(hpage); >> for (i = 0; i < nr_pages; i++) >> ClearPageHWPoison(hpage + i); >> } >> @@ -1491,7 +1491,7 @@ static int soft_offline_huge_page(struct page *page, int flags) >> } else { >> set_page_hwpoison_huge_page(hpage); >> dequeue_hwpoisoned_huge_page(hpage); >> - atomic_long_add(1 << compound_trans_order(hpage), >> + atomic_long_add(1 << compound_order(hpage), >> &num_poisoned_pages); >> } >> return ret; >> @@ -1551,7 +1551,7 @@ int soft_offline_page(struct page *page, int flags) >> if (PageHuge(page)) { >> set_page_hwpoison_huge_page(hpage); >> dequeue_hwpoisoned_huge_page(hpage); >> - atomic_long_add(1 << compound_trans_order(hpage), >> + atomic_long_add(1 << compound_order(hpage), >> &num_poisoned_pages); >> } else { >> SetPageHWPoison(page); > >We have one more compound_trans_order() in unpoison_memory(), so could you >replace that too? > See my reply to patch 3/6. Regards, Wanpeng Li >With that change ... >Reviewed-by: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> > >Thanks, >Naoya Horiguchi -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>