From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753071Ab2IZHiu (ORCPT ); Wed, 26 Sep 2012 03:38:50 -0400 Received: from mga11.intel.com ([192.55.52.93]:51992 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752505Ab2IZHit (ORCPT ); Wed, 26 Sep 2012 03:38:49 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.80,489,1344236400"; d="scan'208";a="226612430" Date: Wed, 26 Sep 2012 15:38:41 +0800 From: Fengguang Wu To: Naoya Horiguchi Cc: David Rientjes , KOSAKI Motohiro , Andrew Morton , Andi Kleen , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] pagemap: fix wrong KPF_THP on slab pages Message-ID: <20120926073841.GA26028@localhost> References: <1348632154-31508-1-git-send-email-n-horiguchi@ah.jp.nec.com> <1348639568-10648-1-git-send-email-n-horiguchi@ah.jp.nec.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1348639568-10648-1-git-send-email-n-horiguchi@ah.jp.nec.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 26, 2012 at 02:06:08AM -0400, Naoya Horiguchi wrote: > On Wed, Sep 26, 2012 at 12:02:34AM -0400, Naoya Horiguchi wrote: > ... > > > > + * page is a thp, not a non-huge compound page. > > > > + */ > > > > + else if (PageTransCompound(page) && !PageSlab(page)) > > > > u |= 1 << KPF_THP; > > > > > > Good catch! > > > > > > Will this report THP for the various drivers that do __GFP_COMP > > > page allocations? > > > > I'm afraid it will. I think of checking PageLRU as an alternative, > > but it needs compound_head() to report tail pages correctly. > > In this context, pages are not pinned or locked, so it's unsafe to > > use compound_head() because it can return a dangling pointer. > > Maybe it's a thp's/hugetlbfs's (not kpageflags specific) problem, > > so going forward with compound_head() expecting that it will be > > fixed in the future work can be an option. > > It seems that compound_trans_head() solves this problem, so I'll > simply use it. Naoya, in fact I didn't quite catch your concerns. Why not just test PageTransCompound(page) && PageLRU(page) The whole page flag report thing is inherently racy and it's fine to report wrong values due to races. The "__GFP_COMP reported as THP", however, should be avoided because it will make consistent wrong reporting of page flags. Thanks, Fengguang