From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6A95C43463 for ; Fri, 18 Sep 2020 07:37:04 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 60A15208C3 for ; Fri, 18 Sep 2020 07:37:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=suse.com header.i=@suse.com header.b="nLnFRe/m" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 60A15208C3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E89246B005D; Fri, 18 Sep 2020 03:37:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E39416B0062; Fri, 18 Sep 2020 03:37:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D4F436B0068; Fri, 18 Sep 2020 03:37:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0187.hostedemail.com [216.40.44.187]) by kanga.kvack.org (Postfix) with ESMTP id B1A866B005D for ; Fri, 18 Sep 2020 03:37:03 -0400 (EDT) Received: from smtpin11.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 7C70E181AEF1F for ; Fri, 18 Sep 2020 07:37:03 +0000 (UTC) X-FDA: 77275375926.11.rice55_3f0f9cb27129 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin11.hostedemail.com (Postfix) with ESMTP id 5575B180F8B80 for ; Fri, 18 Sep 2020 07:37:03 +0000 (UTC) X-HE-Tag: rice55_3f0f9cb27129 X-Filterd-Recvd-Size: 4578 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by imf50.hostedemail.com (Postfix) with ESMTP for ; Fri, 18 Sep 2020 07:37:02 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=cantorsusede; t=1600414621; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=IerR+PY+4rUTIGV+zw/7iB09Mc+/bTYrczgrwaDRFBc=; b=nLnFRe/mcq7skGBJw+mM5/YGg8I+WZlkCTqLblWIL7NmP9BSPZzBnMgpJGm5x7QMYdFbEq M38wC0ove+2L4QhGe/vtZ6h+2fd8Ue8dEJek+ZnGJDjllL8BM9JQ/c/LXZKM/XTAb30uUI dvxpBGx5TWqU8EAEab9oOFkPCAuJU2PTESytTNuHjGx3sLJeBwK/az1M6c+E48YV/YrBTt qq+x1NW4lOnpw+43wb9F/RFEQBxZgGQRcNZv4Xku7+bbxRwGjEFEN9pb4sy2NZnU/NpTmw 2Uu0njttXkDQpvx9oypTd1Bei+J4LThOtZ9U7GzglBVy3nvlMYGCQzBYKR/YOw== Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id B40E0AE16; Fri, 18 Sep 2020 07:37:35 +0000 (UTC) Date: Fri, 18 Sep 2020 09:37:00 +0200 From: Michal Hocko To: Yu Zhao Cc: Andrew Morton , Alex Shi , Steven Rostedt , Ingo Molnar , Johannes Weiner , Vladimir Davydov , Roman Gushchin , Shakeel Butt , Chris Down , Yafang Shao , Vlastimil Babka , Huang Ying , Pankaj Gupta , Matthew Wilcox , Konstantin Khlebnikov , Minchan Kim , Jaewon Kim , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 02/13] mm: use page_off_lru() Message-ID: <20200918073700.GE28827@dhcp22.suse.cz> References: <20200918030051.650890-1-yuzhao@google.com> <20200918030051.650890-3-yuzhao@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200918030051.650890-3-yuzhao@google.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu 17-09-20 21:00:40, Yu Zhao wrote: > This patch replaces the only open-coded __ClearPageActive() with > page_off_lru(). There is no open-coded __ClearPageUnevictable()s. > > Before this patch, we have: > __ClearPageActive() > add_page_to_lru_list() > > After this patch, we have: > page_off_lru() > if PageUnevictable() > __ClearPageUnevictable() > else if PageActive() > __ClearPageActive() > add_page_to_lru_list() > > Checking PageUnevictable() shouldn't be a problem because these two > flags are mutually exclusive. Leaking either will trigger bad_page(). I am sorry but the changelog is really hard to grasp. What are you trying to achieve, why and why it is safe. This should be a general outline for any patch. I have already commented on the previous patch and asked you for the explanation why removing __ClearPageActive from this path is desirable and safe. I have specifically asked to clarify the compound page situation as that is using its oen destructor in the freeing path and that might result in page_off_lru to be not called. > Signed-off-by: Yu Zhao > --- > mm/vmscan.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 503fc5e1fe32..f257d2f61574 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -1845,7 +1845,6 @@ static unsigned noinline_for_stack move_pages_to_lru(struct lruvec *lruvec, > int nr_pages, nr_moved = 0; > LIST_HEAD(pages_to_free); > struct page *page; > - enum lru_list lru; > > while (!list_empty(list)) { > page = lru_to_page(list); > @@ -1860,14 +1859,11 @@ static unsigned noinline_for_stack move_pages_to_lru(struct lruvec *lruvec, > lruvec = mem_cgroup_page_lruvec(page, pgdat); > > SetPageLRU(page); > - lru = page_lru(page); > - > add_page_to_lru_list(page, lruvec, lru); > > if (put_page_testzero(page)) { > __ClearPageLRU(page); > - __ClearPageActive(page); > - del_page_from_lru_list(page, lruvec, lru); > + del_page_from_lru_list(page, lruvec, page_off_lru(page)); > > if (unlikely(PageCompound(page))) { > spin_unlock_irq(&pgdat->lru_lock); > -- > 2.28.0.681.g6f77f65b4e-goog -- Michal Hocko SUSE Labs