Path: csiph.com!news.freedyn.net!aioe.org!bofh.it!news.nic.it!robomod From: Sergey Senozhatsky Newsgroups: linux.kernel Subject: Re: [RFC][PATCH v2 3/3] mm/page_owner: track page free call chain Date: Mon, 11 Jul 2016 09:30:01 +0200 Message-ID: References: Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=qBi54eRG96P/KUjpRn2VmEuXfmYTv10gsjXjwDqZ5pA=; b=dPItMLE+AlVd7RU1qyqfkU2SAiNv1TPiFMEy9c8Pl+nYmrcJMIcVi6ksw4QYuJgO4x 5wZmbhLNg4nRKwTS4LJb7f4I0jxTnttvuruBOfkvKxpY/vLtKyROjO3DYtDFY+A8/Xbp ijTGoUJeJrY9mg5d4RuACqMlDvG4YPcUWpR0qXqOnhO8qntpQoQaoWhZpespQC32o6F5 LJ/UbP1CF2j1DumI0lCudVvB8ug/IVWjpeKapqIsB5IruwRihQdkIKvYdtGm7x8ILE2V ykYTNBgUIullTJymh8BlyD+u8MYGr0bW3vyLsA2plNy5Nw+4yqTRqnDmepUDJxBKgiK8 am/Q== X-Google-Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=qBi54eRG96P/KUjpRn2VmEuXfmYTv10gsjXjwDqZ5pA=; b=T7R7ZlhoDfSCof9rMJxJKruL7tRX0WBrTIQvgbuM5eL2qrQ82zDoS1YTwKAhSUgY6q a0Cq5ZjwSw/njqlPmE3fUWv6LhPcdAFr9xe1q5qihmpa6RvvC2J/84PTBIDQLM8GtKpY Oh1CLzpTTzBjgahlvEjylaqlZRwxmUOduYQWcAk7iYQAxnFfPJ0r5976UgSBlhBUG1Va hZztV9Ya+OWlpdwfEAI+Uy38j67oWIRVxmMEtCgJ8X5m3/678yZIAQCDAlERAHACd/rk FTA0qicrDMYutXrTiq9+ezQMpRkguHN7Kixwy6elRL3NX+kM0BgKPv91QpqAFO4o80jy NTKg== X-Gm-Message-State: ALyK8tIvW8tQbEIUfcj6k6W/38mAPg/AGuWWJzhpImd27I2Uqd2YRuqBZqMtilhkw7coMw== X-Received: by 10.98.79.17 with SMTP id d17mr32538627pfb.127.1468221979707; Mon, 11 Jul 2016 00:26:19 -0700 (PDT) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.6.2 (2016-07-01) Sender: robomod@news.nic.it List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Approved: robomod@news.nic.it Lines: 49 Organization: linux.* mail to news gateway X-Original-Cc: Sergey Senozhatsky , Andrew Morton , Vlastimil Babka , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky X-Original-Date: Mon, 11 Jul 2016 16:24:17 +0900 X-Original-Message-ID: <20160711072417.GA524@swordfish> X-Original-References: <20160708121132.8253-1-sergey.senozhatsky@gmail.com> <20160708121132.8253-4-sergey.senozhatsky@gmail.com> <20160711062115.GC14107@js1304-P5Q-DELUXE> X-Original-Sender: linux-kernel-owner@vger.kernel.org Xref: csiph.com linux.kernel:1440313 On (07/11/16 15:21), Joonsoo Kim wrote: [..] > > +void __page_owner_free_pages(struct page *page, unsigned int order) > > +{ > > + int i; > > + depot_stack_handle_t handle = save_stack(0); > > + > > + for (i = 0; i < (1 << order); i++) { > > + struct page_ext *page_ext = lookup_page_ext(page + i); > > + > > + if (unlikely(!page_ext)) > > + continue; > > + > > + page_ext->handles[PAGE_OWNER_HANDLE_FREE] = handle; > > + __set_bit(PAGE_EXT_OWNER_FREE, &page_ext->flags); > > + __clear_bit(PAGE_EXT_OWNER_ALLOC, &page_ext->flags); > > + } > > +} > > I can't find any clear function to PAGE_EXT_OWNER_FREE. Isn't it > intended? If so, why? the PAGE_EXT_OWNER_FREE bit is not heavily used now. the only place is this test in __dump_page_owner() if (!test_bit(PAGE_EXT_OWNER_ALLOC, &page_ext->flags) && !test_bit(PAGE_EXT_OWNER_FREE, &page_ext->flags)) { pr_alert("page_owner info is not active (free page?)\n"); return; } other than that it's for symmetry/future use. [..] > > @@ -1073,6 +1073,9 @@ static void pagetypeinfo_showmixedcount_print(struct seq_file *m, > > if (!test_bit(PAGE_EXT_OWNER_ALLOC, &page_ext->flags)) > > continue; > > > > + if (!test_bit(PAGE_EXT_OWNER_FREE, &page_ext->flags)) > > + continue; > > + > > I don't think this line is correct. Above PAGE_EXT_OWNER_ALLOC > check is to find allocated page. you are right. that PAGE_EXT_OWNER_FREE test is wrong, indeed. thanks for spotting. -ss