From patchwork Thu Jun 20 20:53:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 11008073 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ADE4314B6 for ; Thu, 20 Jun 2019 20:54:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A2C2828841 for ; Thu, 20 Jun 2019 20:54:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 96DB928861; Thu, 20 Jun 2019 20:54:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A0C1D28841 for ; Thu, 20 Jun 2019 20:54:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5E0CE8E0002; Thu, 20 Jun 2019 16:54:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 591B98E0001; Thu, 20 Jun 2019 16:54:00 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4809A8E0002; Thu, 20 Jun 2019 16:54:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id 18C398E0001 for ; Thu, 20 Jun 2019 16:54:00 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id 65so2281186plf.16 for ; Thu, 20 Jun 2019 13:54:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:smtp-origin-hostprefix:from :smtp-origin-hostname:to:cc:smtp-origin-cluster:subject:date :message-id:in-reply-to:references:mime-version; bh=EqtD9pgjSn3RpeCA8R1A7DD1Wom8eSWCEiXrtl71yV4=; b=nt4uKorF9OoiCxGN9kcSocphG0034YgQuyn+rRZuGzJEQlqIHwj82I/1UmqmNeXGIL 85BdSyI8R9w+2inQ/VraybYHu8jPpm77PsiGks2sg0evqDgeb1NiDKXtGhM9HQuw1WsO e1T0wW2pCDMGh+5E5bLNeB9YdpzMQAEgHR07gxbMtMAz3tX40IhyOUh194iptddL2EAM Q+G6pGafJJoxDbLxB2uXu45Co1q966Gg8z8+F5L60NBxZFMZmDjlRxHo/uF5uEaUkrph zRMJsRTwjxZylvcJ6/sb/lBz2OkFoYDdf3cbcM4JrKIg3RWjKdhC3PHoe3RU/R2UTjCq 6JYA== X-Gm-Message-State: APjAAAWh5eNf58dGjsjxK+X3wFU2NybnA7zwolAgo1pQUMK8cVaJa6tb gj2p6jGCXHxFEdK1rxSwCZGpr12BRxSTrhtcNwzp6Wj/Ucn5zLQ1sMbnWZJR0mi9DE9uNcchLst Lr1Hx+/OFmBkVTK86Q+bTCFYO3r+WIy0kvNRWA/QtU85032JHFCKjrvv7z5jHdoNhZA== X-Received: by 2002:a17:90a:228b:: with SMTP id s11mr1576970pjc.23.1561064039638; Thu, 20 Jun 2019 13:53:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqwfdQZX5z3gGNQFhM/v6/rV2IqcDvcBTme3V3/aAmdrdyeqIvoV5CnzTViU/KB8osmmXchS X-Received: by 2002:a17:90a:228b:: with SMTP id s11mr1576940pjc.23.1561064039039; Thu, 20 Jun 2019 13:53:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561064039; cv=none; d=google.com; s=arc-20160816; b=WzdkbBmz6LxC3rO99G1zNLIqlySvfmiJbyRVZzmg3HX07oBFbth1cinXdQWjFpc43G OxVc0bn8R9wHSL9scb90CggrqwaVlnjEqH9rXM37VMr34W9PYf/XOQlY5CpiyRB7YFtm EkjqbYyPhXm0Slrx63ENy9oVtORLh1ZRVkUDcbxTbXML1j4wAPFskM3YmxKUax2X2uol fwzDFXqoLR+NUU452UCgskma+4P8UgDT8G7Gx4sy5B46mHVRS2o+1cKVL7FU9Zqr1gbq XXuRDQrQVTapwlh96cK5kldg9gpmRA4ANDZHiDKYTS64T13Ypj+90rbeSk73ywjHUufW kxtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=EqtD9pgjSn3RpeCA8R1A7DD1Wom8eSWCEiXrtl71yV4=; b=PkiGDzpDGzBd86DEPnNqOqdi7KFs6flpB0m5piluBYhkF/8SErJOYrKu6c84eij+xI 1fenmTR70OTioK2Eod80ODLQ/xmGgW2xcyljymDGlJwvD/rImhzzOhvWAbDzEc49MmeL 4NUTLPqDroDkTK/G4BekTHLXUIwd1HqFB9no18Uf+Ex0G5HeLF8Y7aJUjZOlRgJKIbG4 f0oyaYNEYbN8v9sUhSSLj7mvX6ftwVtmHkyDWzXioBkYZkVVTLJua3oSfrtS6acCemrl z+peINw73K41YGQZp4SipYkvb8rDExonZL0kXqKOBAlWAhbriZzT6lGzCrhrq2sZAizx id6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=LpDJTpfq; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com. [67.231.145.42]) by mx.google.com with ESMTPS id l24si508957pff.185.2019.06.20.13.53.58 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Jun 2019 13:53:59 -0700 (PDT) Received-SPF: pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) client-ip=67.231.145.42; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=LpDJTpfq; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from pps.filterd (m0044012.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5KKnoce005791 for ; Thu, 20 Jun 2019 13:53:58 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=EqtD9pgjSn3RpeCA8R1A7DD1Wom8eSWCEiXrtl71yV4=; b=LpDJTpfqcAQZyhceb25XcDEeRRD76idUGMP2YCehfhWBdS6UgC5jlKKOaxVp8kKYkZvJ iQYqcb7yNzHAvf259bDRxivY5bQWyoJ82yfIN4bsvN1C0sFdbKbNm7GwYccgyHsskI/G ZjVOQcms0Zki8NUcysf2+xqYg30DxS1q9+M= Received: from mail.thefacebook.com (mailout.thefacebook.com [199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2t867ftg0d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 20 Jun 2019 13:53:58 -0700 Received: from mx-out.facebook.com (2620:10d:c081:10::13) by mail.thefacebook.com (2620:10d:c081:35::129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1713.5; Thu, 20 Jun 2019 13:53:57 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id E8D0762E2A35; Thu, 20 Jun 2019 13:53:55 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: , , CC: , , , , , Song Liu Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v5 1/6] filemap: check compound_head(page)->mapping in filemap_fault() Date: Thu, 20 Jun 2019 13:53:43 -0700 Message-ID: <20190620205348.3980213-2-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190620205348.3980213-1-songliubraving@fb.com> References: <20190620205348.3980213-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-06-20_14:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=926 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906200149 X-FB-Internal: deliver 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: X-Virus-Scanned: ClamAV using ClamSMTP Currently, filemap_fault() avoids trace condition with truncate by checking page->mapping == mapping. This does not work for compound pages. This patch let it check compound_head(page)->mapping instead. Acked-by: Rik van Riel Signed-off-by: Song Liu --- mm/filemap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/filemap.c b/mm/filemap.c index df2006ba0cfa..f5b79a43946d 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2517,7 +2517,7 @@ vm_fault_t filemap_fault(struct vm_fault *vmf) goto out_retry; /* Did it get truncated? */ - if (unlikely(page->mapping != mapping)) { + if (unlikely(compound_head(page)->mapping != mapping)) { unlock_page(page); put_page(page); goto retry_find; From patchwork Thu Jun 20 20:53:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 11008081 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CD05B6C5 for ; Thu, 20 Jun 2019 20:54:05 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BFE952880A for ; Thu, 20 Jun 2019 20:54:05 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B182B28846; Thu, 20 Jun 2019 20:54:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8E3882880A for ; Thu, 20 Jun 2019 20:54:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3236A8E0003; Thu, 20 Jun 2019 16:54:03 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2D4968E0001; Thu, 20 Jun 2019 16:54:03 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1E8A98E0003; Thu, 20 Jun 2019 16:54:03 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id DCDC38E0001 for ; Thu, 20 Jun 2019 16:54:02 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id w14so2307482plp.4 for ; Thu, 20 Jun 2019 13:54:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:smtp-origin-hostprefix:from :smtp-origin-hostname:to:cc:smtp-origin-cluster:subject:date :message-id:in-reply-to:references:mime-version; bh=z7orUW1w2AFawDH57ZTLvYALJSDsMI3HPUuppHQ+jCM=; b=qhxqNETnQd4xHerE8VwMjRO5tytvT/aQOrEbN4Ede3ILqbRu34Esby2XHXwxhxPuuL 5g4PDvaj9TbemywCoEPLT6Ic/GTL3ur+NJTOUAyFEtiHTmR5hSD+D3ujfUeL8bcy3v7o LbEELb+vUOQOXkWLmb4WE3RpnfddrP0XiYJ1JToKwi25PTZiT/EAcjHpdXDyelc+Fp5g sc9OuTCyaKc2ik4Q9Fpf2HxbJmRXBnlbIbP+tfeANtyX0QcVbote7SiblHOJ5sk7/5Cm 1AB9vBYYSCuGFJmi0WSRPc8HcKhlPGIiT9e8vIzDcasTZRl3aigmFMlgUvhYeUuLOzxF ZIgg== X-Gm-Message-State: APjAAAVc/eLGqargYfNxUvLrjFvUGq41xOke5u+Zv4LFL2IvaunqDtMO FCbZWDFAZFlHpSyPBxOappFlnRL+PTA2i4dxiIPYcVvqJpxTZzz3Tq93I6IGyVVbgAmRT0rS8U6 q4yix6+LDAEgSXXMvAll25admW6Xqd7bxWx/yvUr6+nfxBZaM/fk/MqHBnpaBZInVmw== X-Received: by 2002:a17:90a:3548:: with SMTP id q66mr1651587pjb.17.1561064042568; Thu, 20 Jun 2019 13:54:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqxf0Ea+Y9k6XtA9U5evz5XK/txhUSyc6eDjXbvA1EOIeFlAjQe+q1SvDoTf/YOmItDrcVcC X-Received: by 2002:a17:90a:3548:: with SMTP id q66mr1651557pjb.17.1561064041981; Thu, 20 Jun 2019 13:54:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561064041; cv=none; d=google.com; s=arc-20160816; b=zu/a4RaYZRzkEuOiO8SFDxxkSx+SWcNHWFsJhdToYA2xii5biSCsjqnqHME2VuHk2t JqqzjVBApK5GT4x+Ed2ZAnW/QLF/28AW77Vs+MOWHW+9tuzi9MA3/t+jzObbe8KCIppy cHbMGamap+AAkdyUZjWIr/ZXeAbzSxhLjAIK0Z1vcVz6UQeexBKNXHyQCcyqxW2nUaE/ u4K55lBQzUgzwdrD4QQU286VOlbBCiFi0Ef4nJnLch9LvWzKN6tWGWu2FcI3d96jfppK d1uSijleLmfKnfcPfwWxnEOfS4/PT5669aDF/faK/T1/Cuii17cQkTXk3IPToByP/m36 3BMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=z7orUW1w2AFawDH57ZTLvYALJSDsMI3HPUuppHQ+jCM=; b=Oy8HHetMzK1DaNligOZ9Lz/BcWzhpo1DXMsTCRYxVSYEajlw29WnvaG/7bD6IRBU4L ypFHb8M79CYx4gyZPwFUB7g4KpHndLPKWjIrPe2gaA65tzNnknm2dkOKkBiP3eNiNTMa MaDn/Pj2vNpIPcuQrBwv2vl9K5lVx0yHl5ua8ozD+h8LgrwhoO8iDHjEW+URG8QHAzcT s7Agq8n5uBDBAcU5LIK8eS72vtZTd1hUJZArFIcYWoEkCZwj82Jk/vUHB+0CywQGlRgj kdMmgnXadatcqD0aDtYFyYEeQ0H3k5CEGKDXA1Ro6Bi/7t153dY8HxFcr8UMULHjxQ5H LSKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=BeRNQIsv; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com. [67.231.145.42]) by mx.google.com with ESMTPS id cg6si704845plb.350.2019.06.20.13.54.01 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Jun 2019 13:54:01 -0700 (PDT) Received-SPF: pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) client-ip=67.231.145.42; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=BeRNQIsv; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from pps.filterd (m0109333.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5KKjEIZ003579 for ; Thu, 20 Jun 2019 13:54:01 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=z7orUW1w2AFawDH57ZTLvYALJSDsMI3HPUuppHQ+jCM=; b=BeRNQIsvId5MZwnRm+n67jDrBkFpk7yz6cY5yKEDzWJ+ysSw0utTe7k9FMC430P+EHCe a1CTKktxqjcwssvkSTMQLcXFTQ+xxxjN2vKph3qcgzz+FW2iXaPf/2yY8ZmZGFKh9HMo MIDVaXYbwzI5sX4PxhXVrqbPOq31dDgXG7Q= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 2t8eru0n9t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Thu, 20 Jun 2019 13:54:01 -0700 Received: from mx-out.facebook.com (2620:10d:c0a8:1b::d) by mail.thefacebook.com (2620:10d:c0a8:82::f) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 20 Jun 2019 13:54:00 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 99C6262E2A35; Thu, 20 Jun 2019 13:53:58 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: , , CC: , , , , , Song Liu Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v5 2/6] filemap: update offset check in filemap_fault() Date: Thu, 20 Jun 2019 13:53:44 -0700 Message-ID: <20190620205348.3980213-3-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190620205348.3980213-1-songliubraving@fb.com> References: <20190620205348.3980213-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-06-20_14:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=808 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906200149 X-FB-Internal: deliver 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: X-Virus-Scanned: ClamAV using ClamSMTP With THP, current check of offset: VM_BUG_ON_PAGE(page->index != offset, page); is no longer accurate. Update it to: VM_BUG_ON_PAGE(page_to_pgoff(page) != offset, page); Acked-by: Rik van Riel Signed-off-by: Song Liu --- mm/filemap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/filemap.c b/mm/filemap.c index f5b79a43946d..5f072a113535 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2522,7 +2522,7 @@ vm_fault_t filemap_fault(struct vm_fault *vmf) put_page(page); goto retry_find; } - VM_BUG_ON_PAGE(page->index != offset, page); + VM_BUG_ON_PAGE(page_to_pgoff(page) != offset, page); /* * We have a locked page in the page cache, now we need to check From patchwork Thu Jun 20 20:53:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 11008087 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E2D0A14B6 for ; Thu, 20 Jun 2019 20:54:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D66AC28841 for ; Thu, 20 Jun 2019 20:54:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CA25D28862; Thu, 20 Jun 2019 20:54:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6647E28841 for ; Thu, 20 Jun 2019 20:54:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5207A8E0005; Thu, 20 Jun 2019 16:54:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4CEE48E0001; Thu, 20 Jun 2019 16:54:05 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 395058E0006; Thu, 20 Jun 2019 16:54:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yb1-f199.google.com (mail-yb1-f199.google.com [209.85.219.199]) by kanga.kvack.org (Postfix) with ESMTP id 1C2288E0001 for ; Thu, 20 Jun 2019 16:54:05 -0400 (EDT) Received: by mail-yb1-f199.google.com with SMTP id a13so3721063ybm.5 for ; Thu, 20 Jun 2019 13:54:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:smtp-origin-hostprefix:from :smtp-origin-hostname:to:cc:smtp-origin-cluster:subject:date :message-id:in-reply-to:references:mime-version; bh=iFz1RdjWCbrw1b7w4eZ5iGWyb2zDfKg3QSt6me6ZtqE=; b=kCXO9rx8qOusGbwvvp17XdLWBHnoN1MLRiVuXsE4x/U2ZCLxJR8WhRWeJqrH8OP7eZ ghczb08ej1m8yybMMJ6qNkIVEAmRqEmtfvlshd/vF6OQmoR3D2qVl2O06wS2q25/G6cw 4z/iJZ3g6P045/sjtygrsxBs5SuiR5wst3vyitSBYyPmnfyOLzNDadSxy0oAhcKYGhlP +V2KDEiFqAsifD2NTtDqtwZYD6pin78r5XklGvNauvUT0qHTFR6pb6yUfaGz4NK93+zG 0l9oKDeb5Z/7tKOCAO7q/2WZwqVSfLeEwPqVwtTgsUWtnfHn8AgsNWzIJZIPMKt6lAAX ibnA== X-Gm-Message-State: APjAAAX4OICJWxBdF9d8KX5hvou9WBuNbiz/V9M58B1aiQZslAuz6sl1 Z5o/MwXjUu8Id/IJyy0Q9nW3DX50TSCe9F9m5Qs1NXZLOQNosS+vXnmBsXjlrGV4kiXmp0vfVHC hye0vpijsdiPc6KTErfjiNUckhd1SxjT3QabxOEOBpHqoZwNy6ExhTleXPLJKF8R2eA== X-Received: by 2002:a81:1390:: with SMTP id 138mr54800589ywt.68.1561064044799; Thu, 20 Jun 2019 13:54:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqx5NEK1oQSGN1XykPi0PboZEnw7r+I/3C4ZPx2QNk9gvqxCilJ/pxJTy6eITncqlzllaIuD X-Received: by 2002:a81:1390:: with SMTP id 138mr54800569ywt.68.1561064044261; Thu, 20 Jun 2019 13:54:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561064044; cv=none; d=google.com; s=arc-20160816; b=Kjg/PLZGWE6nYZTWaibxhSDlpsVsKMDfWBP4tdV8y1qd68daN8S3G7O7Eb+Q1gn2Gs nrj2pKanRBPW1RkiyJvO5XU33+u8Esmb2zjSogMTdN133CJyUc0oJqBZAAUd367B7tgJ b/7kDMCe23pSkcRUAW25kW37/JBuOSG58kuPZcfXDzIjcBbzvdVktLpMdNU/P7fxJGwL XED4cstWuO2f4NDq/wrk8CUWKSi4POeTrnQKmEbn90iLnqQ8kJZCwEpdV24z4yBkDQE9 6sUm9aYWpgcdznnOgCBlSa1uka2I3Lt2JH+IfCMMr8Dbhf4THIGGQFegADsEq5suSQBL z0Yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=iFz1RdjWCbrw1b7w4eZ5iGWyb2zDfKg3QSt6me6ZtqE=; b=cg9LUJlo1R1Z6mXYecAg/OmdHF0aVIzJCmWY9Xuyw6AnObF8/GSgwAPcgOoZSOL4rw +/0nJXyggC582niMKro0mL79gF6ezQ93NqXT1QgxcWsO+u+ynHfJWHBnsuxvGq3FG0UT J1wPK7eNrCr3VYRvMMgUot0hMFk+Bl2/eJ4+xA2TO5pXyT7iX7oynIqh1s2PhF5nHiCC yXFgtMBkEp8ZTT9CKVCqgpy/euNIHLOvwXDBfBfaoXpCX9bUqq/BRaZlg66HNAtsCtdd QxyoaGM74eQzU5oKCaGm5AEWyzLhT7f4DdxUYwj5BQehpvlh/LqZOV2QeR8959dqhQO2 9ERg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=b3fuWxEO; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.153.30 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com. [67.231.153.30]) by mx.google.com with ESMTPS id b188si226585ywh.113.2019.06.20.13.54.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Jun 2019 13:54:04 -0700 (PDT) Received-SPF: pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.153.30 as permitted sender) client-ip=67.231.153.30; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=b3fuWxEO; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.153.30 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from pps.filterd (m0109332.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5KKs2vV010773 for ; Thu, 20 Jun 2019 13:54:04 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=iFz1RdjWCbrw1b7w4eZ5iGWyb2zDfKg3QSt6me6ZtqE=; b=b3fuWxEO2bh8EURL6LgbdwtTE0On0VONM5U8+/w2EiFEQLS9oOFpgcdCbTuOe5hPfUgz kX/6nUK8e79VK9unMApm+cqPvb8ZTUgxxa3bWBBZOu1nadIBd17jpOUIEKSHA+fcuzZM Xo1So6jIa9/E94+wKRc2OB4oh0s9UJpjX60= Received: from mail.thefacebook.com (mailout.thefacebook.com [199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2t8aj31pm6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 20 Jun 2019 13:54:03 -0700 Received: from mx-out.facebook.com (2620:10d:c081:10::13) by mail.thefacebook.com (2620:10d:c081:35::130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1713.5; Thu, 20 Jun 2019 13:54:02 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 6532D62E2A35; Thu, 20 Jun 2019 13:54:01 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: , , CC: , , , , , Song Liu Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v5 3/6] mm,thp: stats for file backed THP Date: Thu, 20 Jun 2019 13:53:45 -0700 Message-ID: <20190620205348.3980213-4-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190620205348.3980213-1-songliubraving@fb.com> References: <20190620205348.3980213-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-06-20_14:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906200150 X-FB-Internal: deliver 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: X-Virus-Scanned: ClamAV using ClamSMTP In preparation for non-shmem THP, this patch adds two stats and exposes them in /proc/meminfo Acked-by: Rik van Riel Signed-off-by: Song Liu --- fs/proc/meminfo.c | 4 ++++ include/linux/mmzone.h | 2 ++ mm/vmstat.c | 2 ++ 3 files changed, 8 insertions(+) diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c index 568d90e17c17..bac395fc11f9 100644 --- a/fs/proc/meminfo.c +++ b/fs/proc/meminfo.c @@ -136,6 +136,10 @@ static int meminfo_proc_show(struct seq_file *m, void *v) global_node_page_state(NR_SHMEM_THPS) * HPAGE_PMD_NR); show_val_kb(m, "ShmemPmdMapped: ", global_node_page_state(NR_SHMEM_PMDMAPPED) * HPAGE_PMD_NR); + show_val_kb(m, "FileHugePages: ", + global_node_page_state(NR_FILE_THPS) * HPAGE_PMD_NR); + show_val_kb(m, "FilePmdMapped: ", + global_node_page_state(NR_FILE_PMDMAPPED) * HPAGE_PMD_NR); #endif #ifdef CONFIG_CMA diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 70394cabaf4e..827f9b777938 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -234,6 +234,8 @@ enum node_stat_item { NR_SHMEM, /* shmem pages (included tmpfs/GEM pages) */ NR_SHMEM_THPS, NR_SHMEM_PMDMAPPED, + NR_FILE_THPS, + NR_FILE_PMDMAPPED, NR_ANON_THPS, NR_UNSTABLE_NFS, /* NFS unstable pages */ NR_VMSCAN_WRITE, diff --git a/mm/vmstat.c b/mm/vmstat.c index fd7e16ca6996..6afc892a148a 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1158,6 +1158,8 @@ const char * const vmstat_text[] = { "nr_shmem", "nr_shmem_hugepages", "nr_shmem_pmdmapped", + "nr_file_hugepages", + "nr_file_pmdmapped", "nr_anon_transparent_hugepages", "nr_unstable", "nr_vmscan_write", From patchwork Thu Jun 20 20:53:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 11008093 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 80B7776 for ; Thu, 20 Jun 2019 20:54:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 71C532880A for ; Thu, 20 Jun 2019 20:54:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 64BCE28846; Thu, 20 Jun 2019 20:54:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DB5F22880A for ; Thu, 20 Jun 2019 20:54:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 98A998E0007; Thu, 20 Jun 2019 16:54:07 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 93CEC8E0006; Thu, 20 Jun 2019 16:54:07 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 829E08E0007; Thu, 20 Jun 2019 16:54:07 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by kanga.kvack.org (Postfix) with ESMTP id 48ECA8E0006 for ; Thu, 20 Jun 2019 16:54:07 -0400 (EDT) Received: by mail-pf1-f199.google.com with SMTP id x18so2818966pfj.4 for ; Thu, 20 Jun 2019 13:54:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:smtp-origin-hostprefix:from :smtp-origin-hostname:to:cc:smtp-origin-cluster:subject:date :message-id:in-reply-to:references:mime-version; bh=n2snFM7QmmPTPpShlBhEnsGKC2i2/uKCmCMTseCu52k=; b=gB2/VOK9yR11bUizy+F0b97CRArU4+b6IBtD+UTT18chCAH0feIzUKqUg5c6dL0INc PmaTmQsrnjfJxyjQ/md39+xpOJ8dmvs/8BpYrFMQrgiSgE/aw+qSJCF+Cd3WdHE3BoNr PmHAE7sQZv0d6RqhsQKjEq7soCoMVff2tst/puxn6A0a9VI3hhRw/YfDyLdBV7kNBzhP g4G9Ru697Ct3+F0kWhBI1X1uVFgwSwh49rUdFaxn6NNO2qCKc205nTAzLl6d3ycRUJ1G oYPLcD8LYhqD9cu+xwt0AvCi+aMEgEg1ON4OP4LJ3GYue0gXMzFP9KN1AAcQcssVlTI4 wPWw== X-Gm-Message-State: APjAAAWeniXLslDooCL7l3nDKSLIOC6gOsrk8bB9n6Zo4p+JSl2oIpKZ UwWoDAcdLcvnzeiX4aLZSHJBH1tOygjmnwrtTUSo7J9x2bhqHET4Xicsf5TUjIObDVlVnvIcEvz DFdRkVcCpcBbpSC8tzdMZFuuAzvJlz4hd5eNKTSWNtDQFxJtmRxGOmNRNKgDT/kNUjA== X-Received: by 2002:a62:3103:: with SMTP id x3mr50668264pfx.107.1561064046881; Thu, 20 Jun 2019 13:54:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqzfYOLEcQTKjRtk/y30aHTrc3i11+pTSBP4R7eX01tA/FbxtHPG3uEj8QopLN6Oi45tyxkp X-Received: by 2002:a62:3103:: with SMTP id x3mr50668227pfx.107.1561064046225; Thu, 20 Jun 2019 13:54:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561064046; cv=none; d=google.com; s=arc-20160816; b=HExyNBjISyVx+4Z8G01YQDuBu8/bfZ8H9linELMpdhApqSl03yjDsIhxS8sOswOnzc jPVkdZxK7D82REemgGqUPUqGsXTLijGuPFbCXSxR+Ch1KiwfzKMt9BnUcFOLt4gxWa8Q o+TFd+UWRNfg8pN8rxCKkyNVpkH1FNfuibhigYoU3hG2EESLgst1cpZG6bOjSQdofH8J l7rWyPhvsnwR9hCxZiSb5u5C2frW4UHHfJrNRxDmy4mqvkgjo3eKNMBh3D5m63xJ5JXL TsxjNN7k4g96kCzwfp+/lrgGZZgS4mHOQ/+IC1BxwY4WAjmCJc3oMu9fBLKy/moe23Zf 2Xrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=n2snFM7QmmPTPpShlBhEnsGKC2i2/uKCmCMTseCu52k=; b=YR61aiLj/6n9GhB6a+AizA3wH4Sd9mACwKXPZ4a6CGzQwPp0NVY+wsAnAaeo5/jsnI luEguUmdw/wBH/efGW5ltEwhZRLlIXlTXcbAuzBW7RfbzCkUeS2HQfwdKEYqwDprzUPg G/99HgeuBmXbUSUF+NY7BBJ9bq3eU6MxWHwoOgoNBVxRoQgw6NlsWAdy+ivW8nLTs7Pb t+fDsrzLZpwpk/Pz3mhcEgpjspxHU79Pwc2C81gyk80ej69wcNl96JL19q25aPa4WehC s7T4ZhyY6+vDUmEg89jYcXk1d0IdNaGdeNRsXMx0/1yAhHOAPzg6SJKUPlCPb9kkBZfj jSPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b="MO6t/uuq"; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com. [67.231.145.42]) by mx.google.com with ESMTPS id e10si493694pfi.187.2019.06.20.13.54.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Jun 2019 13:54:06 -0700 (PDT) Received-SPF: pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) client-ip=67.231.145.42; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b="MO6t/uuq"; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from pps.filterd (m0148461.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5KKr3CJ022769 for ; Thu, 20 Jun 2019 13:54:05 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=n2snFM7QmmPTPpShlBhEnsGKC2i2/uKCmCMTseCu52k=; b=MO6t/uuqWiOOomNBwU97YOg+TXttbjxehR5XUim4OqdKWGOalMKxrKcMTqcpsoFCSNTE v2Tyx+5GHTxXTSPAKkK7icdV+5yVIe0Ew+tP8foHoFHqdgSuCNXYJKLQy9typVFfpkod AIK/nAgzi7COfwqaGzTulaxsSRSMbugt65w= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 2t8gch8935-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Thu, 20 Jun 2019 13:54:05 -0700 Received: from mx-out.facebook.com (2620:10d:c0a8:1b::d) by mail.thefacebook.com (2620:10d:c0a8:83::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 20 Jun 2019 13:54:04 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 06C3D62E2A35; Thu, 20 Jun 2019 13:54:04 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: , , CC: , , , , , Song Liu Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v5 4/6] khugepaged: rename collapse_shmem() and khugepaged_scan_shmem() Date: Thu, 20 Jun 2019 13:53:46 -0700 Message-ID: <20190620205348.3980213-5-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190620205348.3980213-1-songliubraving@fb.com> References: <20190620205348.3980213-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-06-20_14:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=567 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906200150 X-FB-Internal: deliver 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: X-Virus-Scanned: ClamAV using ClamSMTP Next patch will add khugepaged support of non-shmem files. This patch renames these two functions to reflect the new functionality: collapse_shmem() => collapse_file() khugepaged_scan_shmem() => khugepaged_scan_file() Acked-by: Rik van Riel Signed-off-by: Song Liu --- mm/khugepaged.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 0f7419938008..dde8e45552b3 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1287,7 +1287,7 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) } /** - * collapse_shmem - collapse small tmpfs/shmem pages into huge one. + * collapse_file - collapse small tmpfs/shmem pages into huge one. * * Basic scheme is simple, details are more complex: * - allocate and lock a new huge page; @@ -1304,10 +1304,11 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) * + restore gaps in the page cache; * + unlock and free huge page; */ -static void collapse_shmem(struct mm_struct *mm, +static void collapse_file(struct vm_area_struct *vma, struct address_space *mapping, pgoff_t start, struct page **hpage, int node) { + struct mm_struct *mm = vma->vm_mm; gfp_t gfp; struct page *new_page; struct mem_cgroup *memcg; @@ -1563,7 +1564,7 @@ static void collapse_shmem(struct mm_struct *mm, /* TODO: tracepoints */ } -static void khugepaged_scan_shmem(struct mm_struct *mm, +static void khugepaged_scan_file(struct vm_area_struct *vma, struct address_space *mapping, pgoff_t start, struct page **hpage) { @@ -1631,14 +1632,14 @@ static void khugepaged_scan_shmem(struct mm_struct *mm, result = SCAN_EXCEED_NONE_PTE; } else { node = khugepaged_find_target_node(); - collapse_shmem(mm, mapping, start, hpage, node); + collapse_file(vma, mapping, start, hpage, node); } } /* TODO: tracepoints */ } #else -static void khugepaged_scan_shmem(struct mm_struct *mm, +static void khugepaged_scan_file(struct vm_area_struct *vma, struct address_space *mapping, pgoff_t start, struct page **hpage) { @@ -1722,7 +1723,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, file = get_file(vma->vm_file); up_read(&mm->mmap_sem); ret = 1; - khugepaged_scan_shmem(mm, file->f_mapping, + khugepaged_scan_file(vma, file->f_mapping, pgoff, hpage); fput(file); } else { From patchwork Thu Jun 20 20:53:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 11008095 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5065E6C5 for ; Thu, 20 Jun 2019 20:54:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 413752880A for ; Thu, 20 Jun 2019 20:54:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 351A028846; Thu, 20 Jun 2019 20:54:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4BC1F2880A for ; Thu, 20 Jun 2019 20:54:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 25FB78E0008; Thu, 20 Jun 2019 16:54:12 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 1E9A58E0006; Thu, 20 Jun 2019 16:54:12 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0D9E48E0008; Thu, 20 Jun 2019 16:54:12 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by kanga.kvack.org (Postfix) with ESMTP id C90538E0006 for ; Thu, 20 Jun 2019 16:54:11 -0400 (EDT) Received: by mail-pf1-f199.google.com with SMTP id 5so2805270pff.11 for ; Thu, 20 Jun 2019 13:54:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:smtp-origin-hostprefix:from :smtp-origin-hostname:to:cc:smtp-origin-cluster:subject:date :message-id:in-reply-to:references:mime-version; bh=IWV65r5U1l3yQ4pVTe+jKPIu04iDbUqXRbQ4VzDCPdU=; b=aSLA9TWmgDkwe+YONICNZyZfLdqb4ZfTEx3anzqFUnHk+kD8xDrViFs4nVWZrWZIDK jrL01iMqx/yzNpDgpCEqhuCrHPstIYQ6OYX3eRK1NK/+NxFjJOg4oModaLlPLnxZXPZM 7XnTPbHoHhWk+ekaExC2c3Oat8zI1Ak5/kFEFcZTDDYrLjzsi4o9/FAi2xzGq7PEyn+x BcrfqYg0a03KUc7A3z5hQj4CGfyto3vhFjbkt0iW+L8NT5i7hy6ZXwsBjNt0cE35yElT sZ8GGK682Ivl0ikM6r0zBU1/GORLZB72OHUfCnM6f2Jz7N7oEBzSqzwRuI/D5c+i1aLR 1kpA== X-Gm-Message-State: APjAAAW/coSqO3BQxmnRhRuVz0q3RyNVeDcCEt1CYbPsDKUOK2CsLgK5 3d6ocG6c1TheA+x8ettuqPO+jbzkdZPERwnjVnW0cjDkmhYL2imqUyS7hoSuwQtew4131HYrve+ kSSFyAUsZdwrp1NixMreOkgK0gkT1IJt9osBHtGCUxaSmjdieN4aKT76cwuDsCv02PQ== X-Received: by 2002:a17:902:bf08:: with SMTP id bi8mr92202587plb.189.1561064051453; Thu, 20 Jun 2019 13:54:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqz7Iz1uasyLCvmYM9+vjeBCrni0aeF736dowD2gaZDOWpeWahEcrkWEzIHaHfwXVZplkCNE X-Received: by 2002:a17:902:bf08:: with SMTP id bi8mr92202536plb.189.1561064050294; Thu, 20 Jun 2019 13:54:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561064050; cv=none; d=google.com; s=arc-20160816; b=iM+IQukjfXX+lTVXBN3Ype0ryEn5tyHQmUp9xsHfoUKKqy++Rl9452y+ZFFiARY6D0 0RzcBYcysZK1RS/QBqTjdnhDzXBUVi/sWMPBTVMd30/3BkMB3HOV/CmJ32J+KKvhzO4R sirKmrtFPKBiP6fZFgagXsNImz37CBISny2r3E/mAFbjLnsiAAwlOrkGRBG8+T2NSqyN hpQsypL0txwztrAXcxXCad0Zpdu/nmsbMdHMNaN0nVmtja58VfqEOPSu/Ho43lL26tmX Dvrorh9ppadz1X1uOFfWXV3K36G9CxKN6j/8+wpf0VQ+PpX0FU8ulmjrfAXveYuD2fnv a+rA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=IWV65r5U1l3yQ4pVTe+jKPIu04iDbUqXRbQ4VzDCPdU=; b=clshJlcyenVssvHtKbO8f4I6zadh1Mq1e6OJZYblb6mfi4ke/MV4A/KogGxqLQbK1L NrVfmoEg/5KMHI5FP6l4izP8HOppzwrByQSGwYbOT08RfVDA6YgOy03E9RooI/7miYwQ BzzIr1f3KddQ2LLTSvXRDzEKkaHmdy43p41MyuZSDyLzOrmFpDpKSfCiAi79zvmIiQrG Zg/ryedmxlSRdsvN5yuU1/9lQgmdjaq1de7cV4twI/JzulTlryKuywYH5q0OfHr0npNk zqphkccgCr34c/gui5Iw+YoRVp5LEDp9LZezPY1KlH62YtViBp3LyDSVbjs1C5P/khhQ MDrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=cuu5cB73; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com. [67.231.145.42]) by mx.google.com with ESMTPS id z5si505864pgj.213.2019.06.20.13.54.10 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Jun 2019 13:54:10 -0700 (PDT) Received-SPF: pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) client-ip=67.231.145.42; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=cuu5cB73; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5KKoPXH018563 for ; Thu, 20 Jun 2019 13:54:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=IWV65r5U1l3yQ4pVTe+jKPIu04iDbUqXRbQ4VzDCPdU=; b=cuu5cB73v6pUxQUvAQmCKl2shixdd2vPxKmi7/GQp+mYIQ8kKGacyun2uIlIbYAuNHuL CuZWU7BMZ5RWMcfGCwm0oVWtm9XfTDbkOv4zVRJYxoUk0NB5APr4k1Rb4lVDL4QFZR+d dre0SDL7nsxuPti5tNBCfvIDBSY38dqKKvw= Received: from mail.thefacebook.com (mailout.thefacebook.com [199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2t8deeh0gc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 20 Jun 2019 13:54:09 -0700 Received: from mx-out.facebook.com (2620:10d:c081:10::13) by mail.thefacebook.com (2620:10d:c081:35::127) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1713.5; Thu, 20 Jun 2019 13:54:08 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id D4C1E62E2A35; Thu, 20 Jun 2019 13:54:06 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: , , CC: , , , , , Song Liu Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v5 5/6] mm,thp: add read-only THP support for (non-shmem) FS Date: Thu, 20 Jun 2019 13:53:47 -0700 Message-ID: <20190620205348.3980213-6-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190620205348.3980213-1-songliubraving@fb.com> References: <20190620205348.3980213-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-06-20_14:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906200149 X-FB-Internal: deliver 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: X-Virus-Scanned: ClamAV using ClamSMTP This patch is (hopefully) the first step to enable THP for non-shmem filesystems. This patch enables an application to put part of its text sections to THP via madvise, for example: madvise((void *)0x600000, 0x200000, MADV_HUGEPAGE); We tried to reuse the logic for THP on tmpfs. Currently, write is not supported for non-shmem THP. khugepaged will only process vma with VM_DENYWRITE. The next patch will handle writes, which would only happen when the vma with VM_DENYWRITE is unmapped. An EXPERIMENTAL config, READ_ONLY_THP_FOR_FS, is added to gate this feature. Acked-by: Rik van Riel Signed-off-by: Song Liu --- mm/Kconfig | 11 ++++++ mm/filemap.c | 4 +-- mm/khugepaged.c | 91 +++++++++++++++++++++++++++++++++++++++++-------- mm/rmap.c | 12 ++++--- 4 files changed, 97 insertions(+), 21 deletions(-) diff --git a/mm/Kconfig b/mm/Kconfig index f0c76ba47695..0a8fd589406d 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -762,6 +762,17 @@ config GUP_BENCHMARK See tools/testing/selftests/vm/gup_benchmark.c +config READ_ONLY_THP_FOR_FS + bool "Read-only THP for filesystems (EXPERIMENTAL)" + depends on TRANSPARENT_HUGE_PAGECACHE && SHMEM + + help + Allow khugepaged to put read-only file-backed pages in THP. + + This is marked experimental because it is a new feature. Write + support of file THPs will be developed in the next few release + cycles. + config ARCH_HAS_PTE_SPECIAL bool diff --git a/mm/filemap.c b/mm/filemap.c index 5f072a113535..e79ceccdc6df 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -203,8 +203,8 @@ static void unaccount_page_cache_page(struct address_space *mapping, __mod_node_page_state(page_pgdat(page), NR_SHMEM, -nr); if (PageTransHuge(page)) __dec_node_page_state(page, NR_SHMEM_THPS); - } else { - VM_BUG_ON_PAGE(PageTransHuge(page), page); + } else if (PageTransHuge(page)) { + __dec_node_page_state(page, NR_FILE_THPS); } /* diff --git a/mm/khugepaged.c b/mm/khugepaged.c index dde8e45552b3..fbcff5a1d65a 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -48,6 +48,7 @@ enum scan_result { SCAN_CGROUP_CHARGE_FAIL, SCAN_EXCEED_SWAP_PTE, SCAN_TRUNCATED, + SCAN_PAGE_HAS_PRIVATE, }; #define CREATE_TRACE_POINTS @@ -404,7 +405,11 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, (vm_flags & VM_NOHUGEPAGE) || test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags)) return false; - if (shmem_file(vma->vm_file)) { + + if (shmem_file(vma->vm_file) || + (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS) && + vma->vm_file && + (vm_flags & VM_DENYWRITE))) { if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGE_PAGECACHE)) return false; return IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff, @@ -456,8 +461,9 @@ int khugepaged_enter_vma_merge(struct vm_area_struct *vma, unsigned long hstart, hend; /* - * khugepaged does not yet work on non-shmem files or special - * mappings. And file-private shmem THP is not supported. + * khugepaged only supports read-only files for non-shmem files. + * khugepaged does not yet work on special mappings. And + * file-private shmem THP is not supported. */ if (!hugepage_vma_check(vma, vm_flags)) return 0; @@ -1287,12 +1293,12 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) } /** - * collapse_file - collapse small tmpfs/shmem pages into huge one. + * collapse_file - collapse filemap/tmpfs/shmem pages into huge one. * * Basic scheme is simple, details are more complex: * - allocate and lock a new huge page; * - scan page cache replacing old pages with the new one - * + swap in pages if necessary; + * + swap/gup in pages if necessary; * + fill in gaps; * + keep old pages around in case rollback is required; * - if replacing succeeds: @@ -1316,7 +1322,11 @@ static void collapse_file(struct vm_area_struct *vma, LIST_HEAD(pagelist); XA_STATE_ORDER(xas, &mapping->i_pages, start, HPAGE_PMD_ORDER); int nr_none = 0, result = SCAN_SUCCEED; + bool is_shmem = shmem_file(vma->vm_file); +#ifndef CONFIG_READ_ONLY_THP_FOR_FS + VM_BUG_ON(!is_shmem); +#endif VM_BUG_ON(start & (HPAGE_PMD_NR - 1)); /* Only allocate from the target node */ @@ -1348,7 +1358,8 @@ static void collapse_file(struct vm_area_struct *vma, } while (1); __SetPageLocked(new_page); - __SetPageSwapBacked(new_page); + if (is_shmem) + __SetPageSwapBacked(new_page); new_page->index = start; new_page->mapping = mapping; @@ -1363,7 +1374,7 @@ static void collapse_file(struct vm_area_struct *vma, struct page *page = xas_next(&xas); VM_BUG_ON(index != xas.xa_index); - if (!page) { + if (is_shmem && !page) { /* * Stop if extent has been truncated or hole-punched, * and is now completely empty. @@ -1384,7 +1395,7 @@ static void collapse_file(struct vm_area_struct *vma, continue; } - if (xa_is_value(page) || !PageUptodate(page)) { + if (is_shmem && (xa_is_value(page) || !PageUptodate(page))) { xas_unlock_irq(&xas); /* swap in or instantiate fallocated page */ if (shmem_getpage(mapping->host, index, &page, @@ -1392,6 +1403,24 @@ static void collapse_file(struct vm_area_struct *vma, result = SCAN_FAIL; goto xa_unlocked; } + } else if (!page || xa_is_value(page)) { + unsigned long vaddr; + + VM_BUG_ON(is_shmem); + + vaddr = vma->vm_start + + ((index - vma->vm_pgoff) << PAGE_SHIFT); + xas_unlock_irq(&xas); + if (get_user_pages_remote(NULL, mm, vaddr, 1, + FOLL_FORCE, &page, NULL, NULL) != 1) { + result = SCAN_FAIL; + goto xa_unlocked; + } + lru_add_drain(); + lock_page(page); + } else if (!PageUptodate(page) || PageDirty(page)) { + result = SCAN_FAIL; + goto xa_locked; } else if (trylock_page(page)) { get_page(page); xas_unlock_irq(&xas); @@ -1426,6 +1455,12 @@ static void collapse_file(struct vm_area_struct *vma, goto out_unlock; } + if (page_has_private(page) && + !try_to_release_page(page, GFP_KERNEL)) { + result = SCAN_PAGE_HAS_PRIVATE; + break; + } + if (page_mapped(page)) unmap_mapping_pages(mapping, index, 1, false); @@ -1463,12 +1498,18 @@ static void collapse_file(struct vm_area_struct *vma, goto xa_unlocked; } - __inc_node_page_state(new_page, NR_SHMEM_THPS); + if (is_shmem) + __inc_node_page_state(new_page, NR_SHMEM_THPS); + else + __inc_node_page_state(new_page, NR_FILE_THPS); + if (nr_none) { struct zone *zone = page_zone(new_page); __mod_node_page_state(zone->zone_pgdat, NR_FILE_PAGES, nr_none); - __mod_node_page_state(zone->zone_pgdat, NR_SHMEM, nr_none); + if (is_shmem) + __mod_node_page_state(zone->zone_pgdat, + NR_SHMEM, nr_none); } xa_locked: @@ -1506,10 +1547,15 @@ static void collapse_file(struct vm_area_struct *vma, SetPageUptodate(new_page); page_ref_add(new_page, HPAGE_PMD_NR - 1); - set_page_dirty(new_page); mem_cgroup_commit_charge(new_page, memcg, false, true); + + if (is_shmem) { + set_page_dirty(new_page); + lru_cache_add_anon(new_page); + } else { + lru_cache_add_file(new_page); + } count_memcg_events(memcg, THP_COLLAPSE_ALLOC, 1); - lru_cache_add_anon(new_page); /* * Remove pte page tables, so we can re-fault the page as huge. @@ -1524,7 +1570,9 @@ static void collapse_file(struct vm_area_struct *vma, /* Something went wrong: roll back page cache changes */ xas_lock_irq(&xas); mapping->nrpages -= nr_none; - shmem_uncharge(mapping->host, nr_none); + + if (is_shmem) + shmem_uncharge(mapping->host, nr_none); xas_set(&xas, start); xas_for_each(&xas, page, end - 1) { @@ -1607,6 +1655,17 @@ static void khugepaged_scan_file(struct vm_area_struct *vma, break; } + if (page_has_private(page) && trylock_page(page)) { + int ret; + + ret = try_to_release_page(page, GFP_KERNEL); + unlock_page(page); + if (!ret) { + result = SCAN_PAGE_HAS_PRIVATE; + break; + } + } + if (page_count(page) != 1 + page_mapcount(page)) { result = SCAN_PAGE_COUNT; break; @@ -1714,11 +1773,13 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, VM_BUG_ON(khugepaged_scan.address < hstart || khugepaged_scan.address + HPAGE_PMD_SIZE > hend); - if (shmem_file(vma->vm_file)) { + if (vma->vm_file) { struct file *file; pgoff_t pgoff = linear_page_index(vma, khugepaged_scan.address); - if (!shmem_huge_enabled(vma)) + + if (shmem_file(vma->vm_file) + && !shmem_huge_enabled(vma)) goto skip; file = get_file(vma->vm_file); up_read(&mm->mmap_sem); diff --git a/mm/rmap.c b/mm/rmap.c index e5dfe2ae6b0d..87cfa2c19eda 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1192,8 +1192,10 @@ void page_add_file_rmap(struct page *page, bool compound) } if (!atomic_inc_and_test(compound_mapcount_ptr(page))) goto out; - VM_BUG_ON_PAGE(!PageSwapBacked(page), page); - __inc_node_page_state(page, NR_SHMEM_PMDMAPPED); + if (PageSwapBacked(page)) + __inc_node_page_state(page, NR_SHMEM_PMDMAPPED); + else + __inc_node_page_state(page, NR_FILE_PMDMAPPED); } else { if (PageTransCompound(page) && page_mapping(page)) { VM_WARN_ON_ONCE(!PageLocked(page)); @@ -1232,8 +1234,10 @@ static void page_remove_file_rmap(struct page *page, bool compound) } if (!atomic_add_negative(-1, compound_mapcount_ptr(page))) goto out; - VM_BUG_ON_PAGE(!PageSwapBacked(page), page); - __dec_node_page_state(page, NR_SHMEM_PMDMAPPED); + if (PageSwapBacked(page)) + __dec_node_page_state(page, NR_SHMEM_PMDMAPPED); + else + __dec_node_page_state(page, NR_FILE_PMDMAPPED); } else { if (!atomic_add_negative(-1, &page->_mapcount)) goto out; From patchwork Thu Jun 20 20:53:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Liu X-Patchwork-Id: 11008099 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4E41B76 for ; Thu, 20 Jun 2019 20:54:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 41AFF28841 for ; Thu, 20 Jun 2019 20:54:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 357FD28856; Thu, 20 Jun 2019 20:54:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AB84528841 for ; Thu, 20 Jun 2019 20:54:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 40B478E0009; Thu, 20 Jun 2019 16:54:13 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3BD908E0006; Thu, 20 Jun 2019 16:54:13 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D3D78E0009; Thu, 20 Jun 2019 16:54:13 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id E89B38E0006 for ; Thu, 20 Jun 2019 16:54:12 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id c17so2793992pfb.21 for ; Thu, 20 Jun 2019 13:54:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:smtp-origin-hostprefix:from :smtp-origin-hostname:to:cc:smtp-origin-cluster:subject:date :message-id:in-reply-to:references:mime-version; bh=G4U2JA+ITVRUPcGtQR0tfoOVR3mjydybAs8QYLDNQp4=; b=Rg1UarGXZY9lH9s2bjhs7Xx0dOv9ghJDvINKO2QtkbYfw4/kDOerqOjpCM/2fu/3+w 089Zh2WgXl7WNPzE4btUdTVRaeJ0Z86bGkk3+ICX7zaP0YwDlEcQ3V3QiyAxXjdRebRp b25o1COrk/EGzZZLUPi27Cm1DqT9Z2f3ymMBRyjIiTk6qYgzixOeG6mw6c7d+0q+BJK3 cBlZM7+gby1delbVGJeEmnlYBqJ4vm9DJHKLn+Jpc1sA19zhui5OIMHO6ik8NQDUBxsw aksxm4sXQII9ECh0LNXX+6BFmPg/UjbG2XzQB8lpoGfox7hAzbI9uDfY2vU1Dl6bSukU A3mg== X-Gm-Message-State: APjAAAVmAtxkwqvdeW5AeHIc90gR9BhLWWCtt0M50qyjPXQUWTIyd3e5 d4Xjv1b56In05Ofomx7mvADcpEfncqi0wQndEATcnMtvyU7bNDZUiD+ocYBiQUKuc3fRaArUvQJ xmfVzbI1v7KwnpxKaPIwwBtn4dVe2f4cC1woS99cPYpVaaiuHnOfdjt68jEydZIY3lw== X-Received: by 2002:a17:902:f087:: with SMTP id go7mr100523138plb.330.1561064052619; Thu, 20 Jun 2019 13:54:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqyZ9Fc+MtNFP5y0NJQ24Ne01mc1h8b/MKGM0xHmY0iuo6yoPd0ompmzQqLA0prRxPopFtYe X-Received: by 2002:a17:902:f087:: with SMTP id go7mr100523091plb.330.1561064051916; Thu, 20 Jun 2019 13:54:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561064051; cv=none; d=google.com; s=arc-20160816; b=XV28tWlqWtd7rEmlrhpMNqa7hNsz6eNYaLBWmMQHoecAU+cqQ9PPuCCJd/MChwvWIl HPhkYYC8+LjrvQgZty4/exzez3fdsHKFDJLy4nv6hnuUTmASHdczRDwRDmaGcbee/sKu 6iMgpf8VGkd/eFtJ14LAwLgrmma9sNV95ztu3PslXGTXo7L5qkacofsVvmlf7ygiY6MU q+v09njaTAVqRSnY0KxhfajeM9n6wavnBQTZyk+Goq/goC1WvYQ26SBJuNdcuShbXKrG Hd18h2dp7cT0UobJg5s/tBogI2akkmlv8L1CD7AeHsHma5MR6k5wH4l1QhPTRava+RVr IWPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=G4U2JA+ITVRUPcGtQR0tfoOVR3mjydybAs8QYLDNQp4=; b=sEH+At4ATo5VzBv5f3M6v49PUCNdXjv1tcn5W4mNjI6MNB7eZ4vWwH/W0f1jWa+B6o HvIeaiY3WqqG733nAjTCEMBuxQtLmMhGJ21FIJVHFd9Hfh+X+1lUR8F4CmCpaKOvffyf 3HgAHDOIVyhTcyPI+rb/j+P/IdGyIYNzO8y970X7bnLXEMdwy0zdwYx+ffN00/WTwo// v45YFnoePnxGEsgUwsnkWyn7j+Oh+lrzr0lNilKsulKfZOUtlJ5AOwR3V44pAFkfki+r +X5laF0zLOc0+jUe/KPQXInhRhkQ4f1GaZPCxoAiS3yE2HfSPAKcSsNvsz9k40f7jxDr GpOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=qYjAYh45; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com. [67.231.145.42]) by mx.google.com with ESMTPS id l8si488016pgk.528.2019.06.20.13.54.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Jun 2019 13:54:11 -0700 (PDT) Received-SPF: pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) client-ip=67.231.145.42; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=qYjAYh45; spf=pass (google.com: domain of prvs=107476d203=songliubraving@fb.com designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=107476d203=songliubraving@fb.com"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5KKoPXK018563 for ; Thu, 20 Jun 2019 13:54:11 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=G4U2JA+ITVRUPcGtQR0tfoOVR3mjydybAs8QYLDNQp4=; b=qYjAYh45EGSY4OgxqpFwWGg173IslKGH4D3OsTeKJXtWmuZlesb9RpVT52HsRwDBYrEL Fx12DrVOZvp8XDbzVrxGphAcObmSiRfknktbFbxwYqpBr4L6lEdV8lEXmbJJUhctBMiA LBduJdWjlB5W8F4f8yH2HvX+yPNEFv2uj9Q= Received: from mail.thefacebook.com (mailout.thefacebook.com [199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2t8deeh0gc-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 20 Jun 2019 13:54:11 -0700 Received: from mx-out.facebook.com (2620:10d:c081:10::13) by mail.thefacebook.com (2620:10d:c081:35::127) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1713.5; Thu, 20 Jun 2019 13:54:09 -0700 Received: by devbig006.ftw2.facebook.com (Postfix, from userid 4523) id 1608262E2A35; Thu, 20 Jun 2019 13:54:09 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig006.ftw2.facebook.com To: , , CC: , , , , , Song Liu Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v5 6/6] mm,thp: avoid writes to file with THP in pagecache Date: Thu, 20 Jun 2019 13:53:48 -0700 Message-ID: <20190620205348.3980213-7-songliubraving@fb.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190620205348.3980213-1-songliubraving@fb.com> References: <20190620205348.3980213-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-06-20_14:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=611 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906200149 X-FB-Internal: deliver 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: X-Virus-Scanned: ClamAV using ClamSMTP In previous patch, an application could put part of its text section in THP via madvise(). These THPs will be protected from writes when the application is still running (TXTBSY). However, after the application exits, the file is available for writes. This patch avoids writes to file THP by dropping page cache for the file when the file is open for write. A new counter nr_thps is added to struct address_space. In do_last(), if the file is open for write and nr_thps is non-zero, we drop page cache for the whole file. Signed-off-by: Song Liu Acked-by: Rik van Riel --- fs/inode.c | 3 +++ fs/namei.c | 22 +++++++++++++++++++++- include/linux/fs.h | 31 +++++++++++++++++++++++++++++++ mm/filemap.c | 1 + mm/khugepaged.c | 4 +++- 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index df6542ec3b88..518113a4e219 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -181,6 +181,9 @@ int inode_init_always(struct super_block *sb, struct inode *inode) mapping->flags = 0; mapping->wb_err = 0; atomic_set(&mapping->i_mmap_writable, 0); +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + atomic_set(&mapping->nr_thps, 0); +#endif mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE); mapping->private_data = NULL; mapping->writeback_index = 0; diff --git a/fs/namei.c b/fs/namei.c index 20831c2fbb34..de64f24b58e9 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -3249,6 +3249,22 @@ static int lookup_open(struct nameidata *nd, struct path *path, return error; } +/* + * The file is open for write, so it is not mmapped with VM_DENYWRITE. If + * it still has THP in page cache, drop the whole file from pagecache + * before processing writes. This helps us avoid handling write back of + * THP for now. + */ +static inline void release_file_thp(struct file *file) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + struct inode *inode = file_inode(file); + + if (inode_is_open_for_write(inode) && filemap_nr_thps(inode->i_mapping)) + truncate_pagecache(inode, 0); +#endif +} + /* * Handle the last step of open() */ @@ -3418,7 +3434,11 @@ static int do_last(struct nameidata *nd, goto out; opened: error = ima_file_check(file, op->acc_mode); - if (!error && will_truncate) + if (error) + goto out; + + release_file_thp(file); + if (will_truncate) error = handle_truncate(file); out: if (unlikely(error > 0)) { diff --git a/include/linux/fs.h b/include/linux/fs.h index f7fdfe93e25d..3edf4ee42eee 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -444,6 +444,10 @@ struct address_space { struct xarray i_pages; gfp_t gfp_mask; atomic_t i_mmap_writable; +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + /* number of thp, only for non-shmem files */ + atomic_t nr_thps; +#endif struct rb_root_cached i_mmap; struct rw_semaphore i_mmap_rwsem; unsigned long nrpages; @@ -2790,6 +2794,33 @@ static inline errseq_t filemap_sample_wb_err(struct address_space *mapping) return errseq_sample(&mapping->wb_err); } +static inline int filemap_nr_thps(struct address_space *mapping) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + return atomic_read(&mapping->nr_thps); +#else + return 0; +#endif +} + +static inline void filemap_nr_thps_inc(struct address_space *mapping) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + atomic_inc(&mapping->nr_thps); +#else + WARN_ON_ONCE(1); +#endif +} + +static inline void filemap_nr_thps_dec(struct address_space *mapping) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + atomic_dec(&mapping->nr_thps); +#else + WARN_ON_ONCE(1); +#endif +} + extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync); extern int vfs_fsync(struct file *file, int datasync); diff --git a/mm/filemap.c b/mm/filemap.c index e79ceccdc6df..a8e86c136381 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -205,6 +205,7 @@ static void unaccount_page_cache_page(struct address_space *mapping, __dec_node_page_state(page, NR_SHMEM_THPS); } else if (PageTransHuge(page)) { __dec_node_page_state(page, NR_FILE_THPS); + filemap_nr_thps_dec(mapping); } /* diff --git a/mm/khugepaged.c b/mm/khugepaged.c index fbcff5a1d65a..17ebe9da56ce 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1500,8 +1500,10 @@ static void collapse_file(struct vm_area_struct *vma, if (is_shmem) __inc_node_page_state(new_page, NR_SHMEM_THPS); - else + else { __inc_node_page_state(new_page, NR_FILE_THPS); + filemap_nr_thps_inc(mapping); + } if (nr_none) { struct zone *zone = page_zone(new_page);