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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 8C0B6C433DB for ; Tue, 9 Feb 2021 21:45:47 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E90F664EE0 for ; Tue, 9 Feb 2021 21:45:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E90F664EE0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cmpxchg.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 799526B0005; Tue, 9 Feb 2021 16:45:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 721F26B006C; Tue, 9 Feb 2021 16:45:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5E9C16B006E; Tue, 9 Feb 2021 16:45:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0100.hostedemail.com [216.40.44.100]) by kanga.kvack.org (Postfix) with ESMTP id 448E56B0005 for ; Tue, 9 Feb 2021 16:45:46 -0500 (EST) Received: from smtpin13.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 0FD41160DD for ; Tue, 9 Feb 2021 21:45:46 +0000 (UTC) X-FDA: 77800061892.13.kite82_3b021ac2760a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin13.hostedemail.com (Postfix) with ESMTP id E5B5B184E70B2 for ; Tue, 9 Feb 2021 21:45:45 +0000 (UTC) X-HE-Tag: kite82_3b021ac2760a X-Filterd-Recvd-Size: 4822 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by imf45.hostedemail.com (Postfix) with ESMTP for ; Tue, 9 Feb 2021 21:45:45 +0000 (UTC) Received: by mail-qk1-f179.google.com with SMTP id h8so9419193qkk.6 for ; Tue, 09 Feb 2021 13:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=EwcA9/MPS0+DC3O3HQWukmve7xuaXcZk9slnXQmx7cE=; b=wIT3T2WvKrwC5BKbIvNn7kdMwcTAScbRrfy18Jb8Zhtzgv/tJ/NMmI6yFeXmx+k+zt IAMVDHXZ9uks34GmNs68sEqzbBojhsn2RgNG8RCvtrE6RHopwENBg3jbgh3LGG65XQSy NPt/yTL38hj2tqZqevSZK70ul/wLkw9hmJljmQgwnVN0Q99ewpN7hr7kmujDldtFzpWZ J3W4K3szU4FwoHmBaYJDgsjBKctQ9T/3G7pFtNBuctYp5HkpCtTX4W7eVEV7lzKHiRIs I9/OKo/fFDMkIqhPr5e6FzDVIWPZhLcxuAgqgIIuNa2vpkc0rGZEX0eq0P7wzNG8aWVC x8iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=EwcA9/MPS0+DC3O3HQWukmve7xuaXcZk9slnXQmx7cE=; b=UuZMIzD2Bw4jhs+UltWpbrZdVnTX2sIfGIMjODiSiKc4bX30EozolbhZ8g3oHyujfa HrNmFtgMJQf+yDKqJqq3Q91pVoiJQgGJV+TmcZaWbwAv4BsOrzwnLk9dshp8EYhWvB1/ 8eLXKU889lSN6Kz5KJPu4EZNco0WDiEJ2VbP96I00VhgGLiKRMxYsKwZEegXkaVkvFs4 uPOWNHEKqmWSDpcTq8lQy1vaIAN4SChg6Rfwg2MAEhAF440nHv/I2Y6RXvom6rumBn4d 0ZjyfCei1Qj8NK0ubDZNanObnLtBvXzXeO8MTCV0A6hOYJr/XcFIF/syn5k+nRsuvvry rEnA== X-Gm-Message-State: AOAM533R+MotXWTfK1knvhi9uYYc8u7FjFhkB7K9TGYthGj7nX1qaRtD eO0/zxDB25gbMs3xU+NYplZXWw== X-Google-Smtp-Source: ABdhPJzV8LHr++DxdDhtyzXnSxFy0nGQ52UC/V1tfcP4eIaAhidTFu9Ol3JhP8qypdKFlZYfHliP/Q== X-Received: by 2002:a05:620a:1186:: with SMTP id b6mr239621qkk.180.1612907144543; Tue, 09 Feb 2021 13:45:44 -0800 (PST) Received: from localhost (70.44.39.90.res-cmts.bus.ptd.net. [70.44.39.90]) by smtp.gmail.com with ESMTPSA id z25sm10277qkz.33.2021.02.09.13.45.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Feb 2021 13:45:43 -0800 (PST) From: Johannes Weiner To: Andrew Morton Cc: Hugh Dickins , Michal Hocko , Shakeel Butt , Roman Gushchin , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: [PATCH] mm: page-writeback: simplify memcg handling in test_clear_page_writeback() Date: Tue, 9 Feb 2021 16:45:43 -0500 Message-Id: <20210209214543.112655-1-hannes@cmpxchg.org> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: Page writeback doesn't hold a page reference, which allows truncate to free a page the second PageWriteback is cleared. This used to require special attention in test_clear_page_writeback(), where we had to be careful not to rely on the unstable page->memcg binding and look up all the necessary information before clearing the writeback flag. Since commit 073861ed77b6 ("mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback)") test_clear_page_writeback() is called with an explicit reference on the page, and this dance is no longer needed. Use unlock_page_memcg() and dec_lruvec_page_stat() directly. Signed-off-by: Johannes Weiner --- mm/page-writeback.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index eb34d204d4ee..f6c2c3165d4d 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -2722,12 +2722,9 @@ EXPORT_SYMBOL(clear_page_dirty_for_io); int test_clear_page_writeback(struct page *page) { struct address_space *mapping =3D page_mapping(page); - struct mem_cgroup *memcg; - struct lruvec *lruvec; int ret; =20 - memcg =3D lock_page_memcg(page); - lruvec =3D mem_cgroup_page_lruvec(page, page_pgdat(page)); + lock_page_memcg(page); if (mapping && mapping_use_writeback_tags(mapping)) { struct inode *inode =3D mapping->host; struct backing_dev_info *bdi =3D inode_to_bdi(inode); @@ -2755,11 +2752,11 @@ int test_clear_page_writeback(struct page *page) ret =3D TestClearPageWriteback(page); } if (ret) { - dec_lruvec_state(lruvec, NR_WRITEBACK); + dec_lruvec_page_state(page, NR_WRITEBACK); dec_zone_page_state(page, NR_ZONE_WRITE_PENDING); inc_node_page_state(page, NR_WRITTEN); } - __unlock_page_memcg(memcg); + unlock_page_memcg(page); return ret; } =20 --=20 2.30.0