From patchwork Thu Feb 23 02:44:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 60762 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp77754wrd; Wed, 22 Feb 2023 18:45:52 -0800 (PST) X-Google-Smtp-Source: AK7set/UTbPr7HQMFAZvxxMlSAXmoKhgq0e9Sq9YYSTIbYM/ls/iAHgx/DZXvUZ1CtnIbrCmqHGZ X-Received: by 2002:a17:90a:39ce:b0:233:f7a5:9941 with SMTP id k14-20020a17090a39ce00b00233f7a59941mr13153931pjf.27.1677120351861; Wed, 22 Feb 2023 18:45:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677120351; cv=none; d=google.com; s=arc-20160816; b=wL/H5ZENcTPV/illhXiS+bdSFklKkNdKO7f5QkpW8MKHT4/OcZNFKAMy/DefmBDs5G HYL8Ry3Q+nhBSMyTcdtVqlFFQv3jL88tYcP86vc53MekauRAMBlQZMok0zH2Fj3yytol hyAIH7jxWk1T/zDaG9WusWHv33ecOqi5Fiq0El8hEpByaB+n1u7j4HQFk8Eq86vsYyCs TscbEEv+JhDfoTJn1F9Ao0DCISzCvf6XvRyNWPohasRDt6E7doi3P5jLcY1O9E0mHvQu iVr6wu0brYRcZdjhkVUd+cmJecUiZLVPARqNQDvTB82mGD+QJ+o5sU9uEfCBCGtSfpEh Wx1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=krGz8JNPEfUKWYOBIr5M4Mxvx6mftCSbjb3cTtYDfCE=; b=j0gZ5qaZ2FobgzzmeaCj7BL8citFk18WyCzhKx0uSxG/xB94XyBIxuBlnF/ahYuMkT FZEvg8WWPCy5riUBaMbD2YRGp2DDGdG3n45GuUHi6NbrxWlyynmh6nsovPif4pv2f2Cd 4zI5qVs1GVNuLU0W2U/RyCsPda4ep3Jjtb6LZbcGcIIP+vKDIfbM4jlzMOGjk+0vyE5L +NO12mD3tgD19KY6ed9Idb17SOsSKfb+acFWA2btJ4H1+SVnYFZiaQDOhRLmCMco9+d+ S+QQAq/lH8IsoMv0Dm+5y6Ukou5idNRY1S4Ur6SgyJt/1TQ5Pi6ngWUVhc25UZ47T84T JWcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=WPU7CMVf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hk1-20020a17090b224100b0023720e7e54dsi8841476pjb.49.2023.02.22.18.45.38; Wed, 22 Feb 2023 18:45:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=WPU7CMVf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233101AbjBWCo2 (ORCPT + 99 others); Wed, 22 Feb 2023 21:44:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231567AbjBWCo1 (ORCPT ); Wed, 22 Feb 2023 21:44:27 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 94DCB279B5 for ; Wed, 22 Feb 2023 18:44:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=krGz8JNPEfUKWYOBIr5M4Mxvx6mftCSbjb3cTtYDfCE=; b=WPU7CMVf2DgW2/TSJHS9J0wBbm 7uuRWz2+zFq+EasHiqr1iOkkS9NL5LWxlcCD3ssYHfVxIZqQ+gtxv8xIAdydY8zeX2XXxPd32DMrA xH98Va7Idt0dDo+kqQgqTYTrqEJ2RAZYXxd257F82UMExgv3lmhVcPSPPsWAeKfauFFTA3TPeq+Di Uq9O1gx1dLSp7+uLiQvB2zJWZIz0xjOpuHO5MScdavofEmCokIJtKYMbj90wP8/izrEAVUewGnRZo UUKkZ2ofyPO4lPHlNe3XteK6m8dKpiwygeke619PsuduCvAAoLvnnP9ZRzHoaSHqgmML7d+uGrreJ IZ2d8kFg==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV1ah-00EmN8-6C; Thu, 23 Feb 2023 02:44:15 +0000 From: Luis Chamberlain To: hughd@google.com, akpm@linux-foundation.org, willy@infradead.org Cc: linux-mm@kvack.org, p.raghav@samsung.com, dave@stgolabs.net, a.manzanares@samsung.com, yosryahmed@google.com, mcgrof@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 1/5] shmem: remove check for folio lock on writepage() Date: Wed, 22 Feb 2023 18:44:08 -0800 Message-Id: <20230223024412.3522465-2-mcgrof@kernel.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230223024412.3522465-1-mcgrof@kernel.org> References: <20230223024412.3522465-1-mcgrof@kernel.org> MIME-Version: 1.0 Sender: Luis Chamberlain X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758588150076833729?= X-GMAIL-MSGID: =?utf-8?q?1758588150076833729?= Matthew notes we should not need to check the folio lock on the writepage() callback so remove it. This sanity check has been lingering since linux-history days. We remove this as we tidy up the writepage() callback to make things a bit clearer. Suggested-by: Matthew Wilcox Signed-off-by: Luis Chamberlain --- mm/shmem.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mm/shmem.c b/mm/shmem.c index 28f3c699c8ce..b3ad619328bf 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1351,7 +1351,6 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) folio_clear_dirty(folio); } - BUG_ON(!folio_test_locked(folio)); mapping = folio->mapping; index = folio->index; inode = mapping->host; From patchwork Thu Feb 23 02:44:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 60763 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp77895wrd; Wed, 22 Feb 2023 18:46:19 -0800 (PST) X-Google-Smtp-Source: AK7set/8xhPkr08eJPRXKseSkgFDH8eLRaO9V9/kx8Wbzog6C/TZ/Rixahr5ym5IfN4vcvSBvONi X-Received: by 2002:a17:90b:4c87:b0:236:8e07:4c6d with SMTP id my7-20020a17090b4c8700b002368e074c6dmr12814743pjb.7.1677120378880; Wed, 22 Feb 2023 18:46:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677120378; cv=none; d=google.com; s=arc-20160816; b=KsqRuT1LvoCE/YiIo9lENPiViAuDMR5mltnUO0Zr+qfbdap5e1hi8isCWbGNc6YQeh o0qdlaeMBuPCo2/c+bIHrg9mxR5ots/lU2cXbweQGyK/pBjRmUSxL2D52dss5lpKH8Kt 2soerMslZKEIJTYjfgeowHqh1PZOOMbV/LS04/JASsV5A9JCvXBc7sVf0hksfWwmH0tg i681CyLRyHEo3ozw9riIgA+Hf9c1v/BBGtqMY3lFTI1+Hj2u80DAXeb4hDUhzd3yBX2A Iafq8X5TO6GF7Hv8AI8ZkZNRPQO5uZ2M/WIrpE+yqBrCbRXZvZk9u51Uh0cp/1slVbrO 8GFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Zf/VP5ikCHj8OLL6rer4hxqpVXK1ALaeitWH3YJJWGw=; b=qAHntErIQPJjs1INESDOICeJwwGCVT+LcIZtyMfrYPHdLEysNUL8rJsZ6/UKIGKZLT zbC8elz61a/HRQp7udP0lLDRgX+0wH3TO2fGHp2dhmSSUMa6iZCr2HHToTLZM5s1MCJH BNEIxLuGLErAALCPMLCGxF62pqmSYVLfk24eiMnazHdbEmHx26gD7wZcFbVe499wNc3+ hu8QLYKKDtfmCf5T8C9PFnIvK7ZY4Ey/wWppHUe20D9SXio3G+3jFVktU3MI6obh1+V0 f66sldd4xbZd0f3Vk69+7ZW4JoOoH5WNjQ+WZCUBWxJ4+Rf8Td4fLDClJLmKwMsafhXR YnfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=K56am7J4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t5-20020a17090b018500b00233e9243c88si12026839pjs.187.2023.02.22.18.46.04; Wed, 22 Feb 2023 18:46:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=K56am7J4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232913AbjBWCoi (ORCPT + 99 others); Wed, 22 Feb 2023 21:44:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233082AbjBWCo2 (ORCPT ); Wed, 22 Feb 2023 21:44:28 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E98226CEC for ; Wed, 22 Feb 2023 18:44:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=Zf/VP5ikCHj8OLL6rer4hxqpVXK1ALaeitWH3YJJWGw=; b=K56am7J4RdGNuU6o8W0jdqS0ki klpCVr4uB8PIfFhNoUaw6mxyic+kMZCAItqPxG3BiXoGQRqZaOocgPrH8mWw6CjcKST0X8JSSiCeA QpOTOeoXX9qjWWrb0lLLZffp5U5PkWf0kMvODDM27SmUhugLUSV5VWCWJf97zZ+rLq0Ow8isJpKAD TMwO2rPqOxnEnU+FpRlGvZZwYXSjTdYixOT0+ynh1x0slK5e1rlLbrccAEbpoTtEnfYzvg4bZcNGx D9TolFbzyTqguOlMSvw5Qzrs2hGcv8k/0Y2R3MBKDoLHYT3zuIuEb9r6VtYKNR7qareuSz5A8lT/9 XlQqeXew==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV1ah-00EmNA-7d; Thu, 23 Feb 2023 02:44:15 +0000 From: Luis Chamberlain To: hughd@google.com, akpm@linux-foundation.org, willy@infradead.org Cc: linux-mm@kvack.org, p.raghav@samsung.com, dave@stgolabs.net, a.manzanares@samsung.com, yosryahmed@google.com, mcgrof@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 2/5] shmem: set shmem_writepage() variables early Date: Wed, 22 Feb 2023 18:44:09 -0800 Message-Id: <20230223024412.3522465-3-mcgrof@kernel.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230223024412.3522465-1-mcgrof@kernel.org> References: <20230223024412.3522465-1-mcgrof@kernel.org> MIME-Version: 1.0 Sender: Luis Chamberlain X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758588178093763499?= X-GMAIL-MSGID: =?utf-8?q?1758588178093763499?= shmem_writepage() sets up variables typically used *after* a possible huge page split. However even if that does happen the address space mapping should not change, and the inode does not change either. So it should be safe to set that from the very beginning. This commit makes no functional changes. Signed-off-by: Luis Chamberlain --- mm/shmem.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index b3ad619328bf..1269482d0a5c 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1331,9 +1331,9 @@ int shmem_unuse(unsigned int type) static int shmem_writepage(struct page *page, struct writeback_control *wbc) { struct folio *folio = page_folio(page); - struct shmem_inode_info *info; - struct address_space *mapping; - struct inode *inode; + struct address_space *mapping = folio->mapping; + struct inode *inode = mapping->host; + struct shmem_inode_info *info = SHMEM_I(inode); swp_entry_t swap; pgoff_t index; @@ -1351,10 +1351,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) folio_clear_dirty(folio); } - mapping = folio->mapping; index = folio->index; - inode = mapping->host; - info = SHMEM_I(inode); if (info->flags & VM_LOCKED) goto redirty; if (!total_swap_pages) From patchwork Thu Feb 23 02:44:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 60758 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp77439wrd; Wed, 22 Feb 2023 18:45:07 -0800 (PST) X-Google-Smtp-Source: AK7set9vYSkCAwaDnYVpdCJD5HBDm76LLDL9KhNE4xI/6qV63JItOyUGR35D962OBCVydZ0Qyi40 X-Received: by 2002:a05:6a20:3c91:b0:cb:a64b:6ed9 with SMTP id b17-20020a056a203c9100b000cba64b6ed9mr7011317pzj.37.1677120307625; Wed, 22 Feb 2023 18:45:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677120307; cv=none; d=google.com; s=arc-20160816; b=T0XR3VO7uKh+/dpOAoAFNzusVfJrJh/R+j81wT/LJ5ILr5mfthWb9mbiknzgcRDuea RDZAn8iJwkZSVO2PZaOJ6ieczS/XBDDC4pme6u3shRujnEiIusgnPHz42e19BzZr0NXp KnkjudwE+nsIUhm550sKvH1p7qOzfze2XpC15TJUDNMmv+PgwyCsbXhvj1UI1aSuttnl 83g3JtXAllLH3Qyp7gwSfmP2HFU0vHDJzUSjvSokOa5xFUOyL+gM672FJ07P9CA7y4fE aZvayctXV1BMqwp55a4AgFw0snQaSaIeuTjVr09iPHWZVr7lR4G4m2df2uK/10R66pH6 OBoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vQjHgoe5Jm+n0b1ADMVciA5nvYNCQKcIEIUc76XY5yA=; b=PBaLZvJraht1RzniffuJzluj22zM2/vi9Sb2/2fJ9o2cTxg/jKjNA7I+WAgaaQYT5D 1thCimLw/pTmC938KrPSsAhvYJPuzP5utgB77w1XQHlM1vuNs8nvISx5xij4rA5ReAYi b9WBEq9yWmK8RHeSgjr3uSbf/gYJAUwv/4RmH/J6Yc48hiu1xlqEre8CPZqjzgl4U46G vLeyBTQvmvW8JHZ4j0lqs/TRCHH6o/aL2DllnI6s/vk0KtZeQysBaUgSOUiMzaGiPIg7 VAt14MrQ9+pkp4OrM93ScQl+KIJ4QXmBoFo2ALCM3ARyXaly7+Dq6H8xJ5C4+kFXOrbk G9KQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=nobDFyPW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l188-20020a6325c5000000b00502e3fcec97si4519210pgl.739.2023.02.22.18.44.55; Wed, 22 Feb 2023 18:45:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=nobDFyPW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233120AbjBWCob (ORCPT + 99 others); Wed, 22 Feb 2023 21:44:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232901AbjBWCo1 (ORCPT ); Wed, 22 Feb 2023 21:44:27 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9540E279BF for ; Wed, 22 Feb 2023 18:44:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=vQjHgoe5Jm+n0b1ADMVciA5nvYNCQKcIEIUc76XY5yA=; b=nobDFyPW1FDWru83lnPC9EwGl6 R/FHdKwibKNjX3q9wvjpliuLql+NoQ9c0rhOKA0yrjL0c2fVAZ8p5RDkCW6T/uLryGWU6LLvIkYK3 H8ZiDSzxHfM1HiVyVJJIIX+A6Fs2dWqSFF4Mm8kGPxhMBXeV+81ZHgNBeGyY6UUKuDDPhMnjqGLO5 TABWOhP+CZw4oNP8VfJdPVbrNk70Mb5neyvgQ6W/IecffA3e/SrfwO1okz2f1jrhReSmm+2oITWqW LBsLcoG8bQlb1BH852kJkU4dTTBSJiFZIiW9Bx4gy3pLT+qeSzmlOw0EHq2ID8LlnX29yOscwqVJd SxirXIAw==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV1ah-00EmNC-8r; Thu, 23 Feb 2023 02:44:15 +0000 From: Luis Chamberlain To: hughd@google.com, akpm@linux-foundation.org, willy@infradead.org Cc: linux-mm@kvack.org, p.raghav@samsung.com, dave@stgolabs.net, a.manzanares@samsung.com, yosryahmed@google.com, mcgrof@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 3/5] shmem: move reclaim check early on writepages() Date: Wed, 22 Feb 2023 18:44:10 -0800 Message-Id: <20230223024412.3522465-4-mcgrof@kernel.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230223024412.3522465-1-mcgrof@kernel.org> References: <20230223024412.3522465-1-mcgrof@kernel.org> MIME-Version: 1.0 Sender: Luis Chamberlain X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758588103694958414?= X-GMAIL-MSGID: =?utf-8?q?1758588103694958414?= i915_gem requires huge folios to be split when swapping. However we have check for usage of writepages() to ensure it used only for swap purposes later. Avoid the splits if we're not being called for reclaim, even if they should in theory not happen. This makes the conditions easier to follow on shem_writepage(). Signed-off-by: Luis Chamberlain --- mm/shmem.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 1269482d0a5c..626eb1a0856c 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1337,6 +1337,18 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) swp_entry_t swap; pgoff_t index; + /* + * Our capabilities prevent regular writeback or sync from ever calling + * shmem_writepage; but a stacking filesystem might use ->writepage of + * its underlying filesystem, in which case tmpfs should write out to + * swap only in response to memory pressure, and not for the writeback + * threads or sync. + */ + if (!wbc->for_reclaim) { + WARN_ON_ONCE(1); /* Still happens? Tell us about it! */ + goto redirty; + } + /* * If /sys/kernel/mm/transparent_hugepage/shmem_enabled is "always" or * "force", drivers/gpu/drm/i915/gem/i915_gem_shmem.c gets huge pages, @@ -1357,18 +1369,6 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) if (!total_swap_pages) goto redirty; - /* - * Our capabilities prevent regular writeback or sync from ever calling - * shmem_writepage; but a stacking filesystem might use ->writepage of - * its underlying filesystem, in which case tmpfs should write out to - * swap only in response to memory pressure, and not for the writeback - * threads or sync. - */ - if (!wbc->for_reclaim) { - WARN_ON_ONCE(1); /* Still happens? Tell us about it! */ - goto redirty; - } - /* * This is somewhat ridiculous, but without plumbing a SWAP_MAP_FALLOC * value into swapfile.c, the only way we can correctly account for a From patchwork Thu Feb 23 02:44:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 60761 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp77652wrd; Wed, 22 Feb 2023 18:45:37 -0800 (PST) X-Google-Smtp-Source: AK7set+RhLx+Sdp2twSEtfp4ABFuUMuOZpUWVJtjYkwrsWZuWsO3X53zIM5gItspGjNw8gvYtKDo X-Received: by 2002:a17:90b:350f:b0:234:86a5:f800 with SMTP id ls15-20020a17090b350f00b0023486a5f800mr11669021pjb.34.1677120336954; Wed, 22 Feb 2023 18:45:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677120336; cv=none; d=google.com; s=arc-20160816; b=Ia+m6+O3vFt4JtZowly1QPZRzhIes3g5GVtopo6wBPU/M6HKv1shfpVbFrr1K5SNOU 401tFe8AflhkNeuoTsE7NoojB55LzBL5Wa68WTM60Rp76W+3vNaFZRkR9xlsAtfCEBIX 4oO1YcnNHj29H5cPX5h8FH0u35K7HW68Zdd7u/QQtXGK9Ck5W9PVASTfWNRvRehNuOL1 kP/OlUgeT2bJbbSm1cQKD2XVaIBhuCO+TC1suPaBecup0DM17whXNZ243vMuvgnoB3ia GC/34AMlU0XNqNjhVSFbOQiB7aEfLAR/laPAxJTwP6Efk77xbB14tZOCWyQXpIcm15uo 84wQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=kiZfMZIUImYTT26kimjDxbkl+uiLHr4foE9jVeUonNw=; b=rZpMF6rwKo8UR/2JNuApBhF10vWdFvwIFuCjuAQovJQhwxf8a+LgLWfVDy6lpqklVK ghXmL0oKE0QM6uAvOkkfKe4+a8oYBf10tUzs2hJGPC+TRcDbCduDo70eYxz8HEAnCXUb MoG+NO+J4xx6yuuS1hkhXEaGAIak4dqFLDDAXtTCT0uJ+zKHDMkgfPi21hm1wrFxXgYM tvvyNS64W7zwo8O5Ppf5dKAxDQ5Xt2LaHRl5SNcMyXZU/w27zaR1bejYnw1dr318CJxz AxZmjwIZMdzNQK25UWBpSTVvb7bYA+Tmd+8vsGor+iKFvbg1nmbDw/EDWRco9JDHDTiO wFtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=sn2iEaZx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u4-20020a170902e80400b0019ab79d755fsi13243713plg.125.2023.02.22.18.45.19; Wed, 22 Feb 2023 18:45:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=sn2iEaZx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233082AbjBWCon (ORCPT + 99 others); Wed, 22 Feb 2023 21:44:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233092AbjBWCo2 (ORCPT ); Wed, 22 Feb 2023 21:44:28 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 521C726586 for ; Wed, 22 Feb 2023 18:44:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=kiZfMZIUImYTT26kimjDxbkl+uiLHr4foE9jVeUonNw=; b=sn2iEaZxSxcZjr+lLEI+B9ZNfD ag2rd1ZA2IdkPMeYOuIbwUEge8ajYxG0X3vo+WuNHeE+62APWJEO/TQ+BEwvXPPTKO08otnIXs5Yn H5l53U6iDGmiMIOfWkieSJ1WN0Q/joKc8yr4grfgcI+SPDH7VlzINQV7egc10DDUTWILqPocCSj1o XDf9ihIRyG8DyPLMC9rit2JBlfpauaPYiOzpZfEAHTt+yslONZY1xDy5BC4wiV6lsokBvqZVjPYU9 M/s2WFxV74jDhTSMO3eHfu513os/QCbn/WTrt9tXhV/ao06RvY6cmntgbABP0/E6sLUKQ8wKo25Fz rCFNadYA==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV1ah-00EmNE-A6; Thu, 23 Feb 2023 02:44:15 +0000 From: Luis Chamberlain To: hughd@google.com, akpm@linux-foundation.org, willy@infradead.org Cc: linux-mm@kvack.org, p.raghav@samsung.com, dave@stgolabs.net, a.manzanares@samsung.com, yosryahmed@google.com, mcgrof@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 4/5] shmem: skip page split if we're not reclaiming Date: Wed, 22 Feb 2023 18:44:11 -0800 Message-Id: <20230223024412.3522465-5-mcgrof@kernel.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230223024412.3522465-1-mcgrof@kernel.org> References: <20230223024412.3522465-1-mcgrof@kernel.org> MIME-Version: 1.0 Sender: Luis Chamberlain X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758588134854182169?= X-GMAIL-MSGID: =?utf-8?q?1758588134854182169?= In theory when info->flags & VM_LOCKED we should not be getting shem_writepage() called so we should be verifying this with a WARN_ON_ONCE(). Since we should not be swapping then best to ensure we also don't do the folio split earlier too. So just move the check early to avoid folio splits in case its a dubious call. We also have a similar early bail when !total_swap_pages so just move that earlier to avoid the possible folio split in the same situation. Signed-off-by: Luis Chamberlain --- mm/shmem.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 626eb1a0856c..a49b31d38627 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1349,6 +1349,12 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) goto redirty; } + if (WARN_ON_ONCE(info->flags & VM_LOCKED)) + goto redirty; + + if (!total_swap_pages) + goto redirty; + /* * If /sys/kernel/mm/transparent_hugepage/shmem_enabled is "always" or * "force", drivers/gpu/drm/i915/gem/i915_gem_shmem.c gets huge pages, @@ -1364,10 +1370,6 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) } index = folio->index; - if (info->flags & VM_LOCKED) - goto redirty; - if (!total_swap_pages) - goto redirty; /* * This is somewhat ridiculous, but without plumbing a SWAP_MAP_FALLOC From patchwork Thu Feb 23 02:44:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 60759 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp77441wrd; Wed, 22 Feb 2023 18:45:08 -0800 (PST) X-Google-Smtp-Source: AK7set9B4fzbpIFYpa7DSTumKjnoNB1iCR2tXjgjVEYZ5JaipeXA4nmZzJVkUgokhT9LBCSPT3bR X-Received: by 2002:a17:902:da91:b0:19a:a0d0:10f0 with SMTP id j17-20020a170902da9100b0019aa0d010f0mr12450590plx.23.1677120307871; Wed, 22 Feb 2023 18:45:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677120307; cv=none; d=google.com; s=arc-20160816; b=DM0ZGltgIDieVtG77WZrunwkUq467IpmIkHrXpcYi9V6d3MXQDJGFuTOh7ItzJB0F6 aBmk8kl/z1ZSaCrOO2Nt1PTx6thB75by/QjJYuqH2K+MApERd1QsriyimyyAmtCZ9yK6 JhtrQmEE3BsxMMzzBjSF/3TIKlRJnB/qOPYPLwJ37cU41DauDYqQiIkFtU338J4idCJN hhJG6E2yR02ef7roWdXNVJ9ywEn3VqMptf+ITFpFRUsk6hksUHtz7XcNjtmPE9e5pDyx 3pkSCWdqLPmEEryBiE0mcxI1SSVOfqK4mSqU/sYhbPL7lEFz/fi2GbUNKXcEMM6tID01 iuAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wt4p/r9ymCcnGEqY87sHknk0U2eY7wcxJejPwvb0Ylo=; b=bLWJr1G4uBnP6ikxkquL62IDKziRieCyGjS2Ir3irg+3dPtN186WLi2zKA7kOEbnH3 dCCegApDJHabnRnBgbYv3APwJ9z1wIOo7mR6Pqn9LUMRj+NzQGaOtH71P+fXU+g4VOVk HqLjI4pzkgjwbm6dmC0VwCM/t4kNUIPhFA/ePGurzc+lmw7HjLWc9Fpse1DaditXeJMn 0MYO2qBt5lXBwaBUFg+YGvTUkEwLADlUg0gXM7bliz5etbNHUGNJAJLN/dalmiRHeml/ wM0Hb/a9aHSSW8cxVytKaXSvEgTZtg43/8YUK0WtkHM+K86EAyp91Ty7y85bFSZ81HiG 4F2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=TrDfJdxV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kz4-20020a170902f9c400b0019cbce62be0si581863plb.335.2023.02.22.18.44.55; Wed, 22 Feb 2023 18:45:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=TrDfJdxV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233132AbjBWCoe (ORCPT + 99 others); Wed, 22 Feb 2023 21:44:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230435AbjBWCo1 (ORCPT ); Wed, 22 Feb 2023 21:44:27 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC79E27D42 for ; Wed, 22 Feb 2023 18:44:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=wt4p/r9ymCcnGEqY87sHknk0U2eY7wcxJejPwvb0Ylo=; b=TrDfJdxVZcws00Hj9FGWVMTTCL LfcxodfOiVzFwmzhWMsfva7J5bIJGP2E7QgIGmqqfo0DOX04NoMNtbtNomLSuHaXzr0rQJ8uBJCPI llX7IWzs7lCHCrQRtkGRVdkzf6Wj9qUR7dRDXpKE8czsLpuellL8pHfWdJLVatBbwk7uRCU3k8RLP tH5N9MsQXVK3OPjAO672R0qfraGFGCGc5hq8V5GARE9bDCNt5yr0aFIUrtNVR8Txu6e8QOcsB1HBw OOyzrDPA419O0WyksHMacOMnEMt9/aWoLIr4DUUWS29M99FQ9baEFP4R0ZkbDchM4BVFJH0OqqpIR 7yC1G3EA==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV1ah-00EmNH-BN; Thu, 23 Feb 2023 02:44:15 +0000 From: Luis Chamberlain To: hughd@google.com, akpm@linux-foundation.org, willy@infradead.org Cc: linux-mm@kvack.org, p.raghav@samsung.com, dave@stgolabs.net, a.manzanares@samsung.com, yosryahmed@google.com, mcgrof@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 5/5] shmem: add support to ignore swap Date: Wed, 22 Feb 2023 18:44:12 -0800 Message-Id: <20230223024412.3522465-6-mcgrof@kernel.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230223024412.3522465-1-mcgrof@kernel.org> References: <20230223024412.3522465-1-mcgrof@kernel.org> MIME-Version: 1.0 Sender: Luis Chamberlain X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758588104234275418?= X-GMAIL-MSGID: =?utf-8?q?1758588104234275418?= In doing experimentations with shmem having the option to avoid swap becomes a useful mechanism. One of the *raves* about brd over shmem is you can avoid swap, but that's not really a good reason to use brd if we can instead use shmem. Using brd has its own good reasons to exist, but just because "tmpfs" doesn't let you do that is not a great reason to avoid it if we can easily add support for it. I don't add support for reconfiguring incompatible options, but if we really wanted to we can add support for that. To avoid swap we use mapping_set_unevictable() upon inode creation, and put a WARN_ON_ONCE() stop-gap on writepages() for reclaim. Signed-off-by: Luis Chamberlain Acked-by: Christian Brauner --- Documentation/mm/unevictable-lru.rst | 2 ++ include/linux/shmem_fs.h | 1 + mm/shmem.c | 26 +++++++++++++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Documentation/mm/unevictable-lru.rst b/Documentation/mm/unevictable-lru.rst index 53e59433497a..d7e11f492289 100644 --- a/Documentation/mm/unevictable-lru.rst +++ b/Documentation/mm/unevictable-lru.rst @@ -44,6 +44,8 @@ The unevictable list addresses the following classes of unevictable pages: * Those owned by ramfs. + * Those owned by tmpfs with the noswap option. + * Those mapped into SHM_LOCK'd shared memory regions. * Those mapped into VM_LOCKED [mlock()ed] VMAs. diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index d09d54be4ffd..98a7d53f6cc5 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -45,6 +45,7 @@ struct shmem_sb_info { kuid_t uid; /* Mount uid for root directory */ kgid_t gid; /* Mount gid for root directory */ bool full_inums; /* If i_ino should be uint or ino_t */ + bool noswap; /* ingores VM relcaim / swap requests */ ino_t next_ino; /* The next per-sb inode number to use */ ino_t __percpu *ino_batch; /* The next per-cpu inode number to use */ struct mempolicy *mpol; /* default memory policy for mappings */ diff --git a/mm/shmem.c b/mm/shmem.c index a49b31d38627..d2f34147fc66 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -116,10 +116,12 @@ struct shmem_options { bool full_inums; int huge; int seen; + bool noswap; #define SHMEM_SEEN_BLOCKS 1 #define SHMEM_SEEN_INODES 2 #define SHMEM_SEEN_HUGE 4 #define SHMEM_SEEN_INUMS 8 +#define SHMEM_SEEN_NOSWAP 16 }; #ifdef CONFIG_TMPFS @@ -1334,6 +1336,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) struct address_space *mapping = folio->mapping; struct inode *inode = mapping->host; struct shmem_inode_info *info = SHMEM_I(inode); + struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb); swp_entry_t swap; pgoff_t index; @@ -1349,7 +1352,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) goto redirty; } - if (WARN_ON_ONCE(info->flags & VM_LOCKED)) + if (WARN_ON_ONCE((info->flags & VM_LOCKED) || sbinfo->noswap)) goto redirty; if (!total_swap_pages) @@ -2374,6 +2377,8 @@ static struct inode *shmem_get_inode(struct mnt_idmap *idmap, struct super_block shmem_set_inode_flags(inode, info->fsflags); INIT_LIST_HEAD(&info->shrinklist); INIT_LIST_HEAD(&info->swaplist); + if (sbinfo->noswap) + mapping_set_unevictable(inode->i_mapping); simple_xattrs_init(&info->xattrs); cache_no_acl(inode); mapping_set_large_folios(inode->i_mapping); @@ -3461,6 +3466,7 @@ enum shmem_param { Opt_uid, Opt_inode32, Opt_inode64, + Opt_noswap, }; static const struct constant_table shmem_param_enums_huge[] = { @@ -3482,6 +3488,7 @@ const struct fs_parameter_spec shmem_fs_parameters[] = { fsparam_u32 ("uid", Opt_uid), fsparam_flag ("inode32", Opt_inode32), fsparam_flag ("inode64", Opt_inode64), + fsparam_flag ("noswap", Opt_noswap), {} }; @@ -3565,6 +3572,10 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param) ctx->full_inums = true; ctx->seen |= SHMEM_SEEN_INUMS; break; + case Opt_noswap: + ctx->noswap = true; + ctx->seen |= SHMEM_SEEN_NOSWAP; + break; } return 0; @@ -3663,6 +3674,14 @@ static int shmem_reconfigure(struct fs_context *fc) err = "Current inum too high to switch to 32-bit inums"; goto out; } + if ((ctx->seen & SHMEM_SEEN_NOSWAP) && ctx->noswap && !sbinfo->noswap) { + err = "Cannot disable swap on remount"; + goto out; + } + if (!(ctx->seen & SHMEM_SEEN_NOSWAP) && !ctx->noswap && sbinfo->noswap) { + err = "Cannot enable swap on remount if it was disabled on first mount"; + goto out; + } if (ctx->seen & SHMEM_SEEN_HUGE) sbinfo->huge = ctx->huge; @@ -3683,6 +3702,10 @@ static int shmem_reconfigure(struct fs_context *fc) sbinfo->mpol = ctx->mpol; /* transfers initial ref */ ctx->mpol = NULL; } + + if (ctx->noswap) + sbinfo->noswap = true; + raw_spin_unlock(&sbinfo->stat_lock); mpol_put(mpol); return 0; @@ -3780,6 +3803,7 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) ctx->inodes = shmem_default_max_inodes(); if (!(ctx->seen & SHMEM_SEEN_INUMS)) ctx->full_inums = IS_ENABLED(CONFIG_TMPFS_INODE64); + sbinfo->noswap = ctx->noswap; } else { sb->s_flags |= SB_NOUSER; }