From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE5B3C3601E for ; Mon, 14 Apr 2025 00:32:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B988F280031; Sun, 13 Apr 2025 20:32:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B202828002E; Sun, 13 Apr 2025 20:32:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94C05280031; Sun, 13 Apr 2025 20:32:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 73E9128002E for ; Sun, 13 Apr 2025 20:32:53 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id F41115C547 for ; Mon, 14 Apr 2025 00:32:53 +0000 (UTC) X-FDA: 83330774226.23.338EB4B Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2046.outbound.protection.outlook.com [40.107.236.46]) by imf06.hostedemail.com (Postfix) with ESMTP id 517D6180007 for ; Mon, 14 Apr 2025 00:32:51 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=eJEKpklf; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf06.hostedemail.com: domain of apopple@nvidia.com designates 40.107.236.46 as permitted sender) smtp.mailfrom=apopple@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744590771; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dhR8N/XBIeOEK/YwakHW6j87uRLgKHHBx4S+abE6/9o=; b=u17YXiNXexEy2DA5WzaB0Jk55SIxdGqunRXTW895uQl3TBvSVsJ+xKXW9pUaTiyr+M9/xS L5c2NTstGrJf2U24Ik8pyRHB5WNV97AW2XKNa9jnfnGNcrSXk8Ohu+lRNDnIcY2xBX3Vz3 i4HyPqkbayHTmmMB/v96J6OWygnBV+8= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=eJEKpklf; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf06.hostedemail.com: domain of apopple@nvidia.com designates 40.107.236.46 as permitted sender) smtp.mailfrom=apopple@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744590771; a=rsa-sha256; cv=pass; b=v+LzzI226HMpLGLPgCFt8qiooyVBSsP0k8euX6sViShCOKSMvr2eDG8IBtkhTG1Ss8l45Q 2i66I6ms5sN5B6XXs+Jk+QbRXOjXihFfpVierg9aMsSHY4mOIJbqni5jwhuNmrVLT4WemB J0fvRSSYq9dADSEPEtN9lYS3oq+x+B8= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n9tp+Ethl13wSEEbPPqDWmK7p4PViLQEZJbyk5XGcbUOBbCCgLAd5lCPkhVGDlCATSW79pc5giURQIa19+9Dfp+CjsQazr4UIT8BeBmWxUHefmfNS4AM0O7LgnqnWFNUs6VKw++JyWIq6G4rpAEKMOFrjef2bLJPjaabmtsS7Zut5H02D8fd7pOjeTxCPN1zPSEjEW4LvRosehOuKXa+1s2tqZhP3KqeSBtpqtoSTOyJ5qQPjaBOrA8Q8INSzcnPHbyFzma+3F0ZbOzFO3aqEPla6zriu5LB+PL3pCvb6ouleNnlo8DzOaXheg90TL1z1wkhELof3QXsnCz8RW8/DA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dhR8N/XBIeOEK/YwakHW6j87uRLgKHHBx4S+abE6/9o=; b=imHyMNT4uz5gjJskV/fYrghBhoET7e3tBgGXvENXZsRXIV16ZW+cdUzFqt9U9bK11NS0Xlo6w2kPF+/GMkHQ7h5c/gqTiL1sj5MN/3Af7CloA8dcOguk1GK0LQo692OiZv2f+Cu2F7XFZugfJ9mQb93iWYysrZWLs/ILB5nd2Q8zqu10DgaM3c/NGniaQQXS1nN7Y6c8efgWHxDtO2bI+t/2mGUmn7LTsvCkzLrZI5z74JcqV8896fiV8WxC6FF9NUmlXDM+IWF43D+nTnPXpuy0LAtnuNj7lAQEWTaxrPV81xMN9B8qylgCn/i82tw0M3/3dFrW8OcAtzEGTFFz9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dhR8N/XBIeOEK/YwakHW6j87uRLgKHHBx4S+abE6/9o=; b=eJEKpklftqL/okP4suSm5TA+uX+GXEysRsVYIbIpZtMvHnh6hSD9nPhdcOVZq5GPMlTtlLis6O2rUqw9XVHCuGOjnGLJ5YfAbLBhWfEVIJoFe9Ot1LlPxxoPE/sQX1XZKKwjhBtMRmNbkuEDFn4S0r0dfjuPSU5D/esUil38tnoDDlG6x3r4rtCEl12j3EXfwgBaCJxDsCaueoAq2u360oJEZSynCK8MWInd80EUsm36DVXHHraTspSzeZyo64wakER1ouU6UPSrCbU5Z1IpDTEUM2R+2H/A7IvW0MIfs9znrmDNOeQEr+0H0k5fu2+EZdJFhwmahG0BWDMyf7HqcA== Received: from DS0PR12MB7726.namprd12.prod.outlook.com (2603:10b6:8:130::6) by CH1PPF4CBE7339A.namprd12.prod.outlook.com (2603:10b6:61f:fc00::60e) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.33; Mon, 14 Apr 2025 00:32:47 +0000 Received: from DS0PR12MB7726.namprd12.prod.outlook.com ([fe80::953f:2f80:90c5:67fe]) by DS0PR12MB7726.namprd12.prod.outlook.com ([fe80::953f:2f80:90c5:67fe%4]) with mapi id 15.20.8632.030; Mon, 14 Apr 2025 00:32:47 +0000 Date: Mon, 14 Apr 2025 10:32:42 +1000 From: Alistair Popple To: David Hildenbrand Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, nvdimm@lists.linux.dev, Alison Schofield , Alexander Viro , Christian Brauner , Jan Kara , Dan Williams , Matthew Wilcox , Andrew Morton , Christoph Hellwig , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v1] fs/dax: fix folio splitting issue by resetting old folio order + _nr_pages Message-ID: References: <20250410091020.119116-1-david@redhat.com> <6e1a9ad5-c1e1-4f04-af67-cfc05246acbc@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6e1a9ad5-c1e1-4f04-af67-cfc05246acbc@redhat.com> X-ClientProxiedBy: SYCP282CA0012.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:80::24) To DS0PR12MB7726.namprd12.prod.outlook.com (2603:10b6:8:130::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR12MB7726:EE_|CH1PPF4CBE7339A:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c53c999-daa8-4dba-cb93-08dd7aebe11c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PoVlYFqPyM4/nNAk6dBrGieamYmOnqxCQGmaplxK4AAGVo4r/wbadlkyXu6F?= =?us-ascii?Q?9vI/hHt4ERbCtezDXYpC5nA9syZ7OpfFfMBi8MG1m8xT3x3pP9S244+4B37H?= =?us-ascii?Q?QbFUOPN2YaBQVZTMMHYH0do9MEP6+WLMYJ14lJLI/kEykaWnVGBz6rTqqemm?= =?us-ascii?Q?DxjnIi6NXVQRXYcOcsCsB3tbmyY2LEVzPewiEJ8aeMsNB9608sG2qmtywWtK?= =?us-ascii?Q?S2v4shXlwT702aGiTzqDHPDvJuqf5yjFzn184y2e5+U8HLonQE4R2Xz3Qs/H?= =?us-ascii?Q?0j+Z9ExuJhJozBmjZQ+SCryvma3/zLQj4iN/wmNuFS9mEGeRupqSgF3Rzzbh?= =?us-ascii?Q?fAmaoQchR87BTg3xMw9fFC1DbIU1uRlrZ+WcgeBK88TQjjBbdFxbB7J+3Wz5?= =?us-ascii?Q?pyz1yt5dSklalWpJhZr6frq5KN9cKhPg1B7VgbzYnm75uafcY74yVqXBDcLU?= =?us-ascii?Q?9lHLOOFlUwVRPCs6JtORowgtIEBUute0JGjMR0a6CR62jZ9MYO9NNE3h9QqC?= =?us-ascii?Q?eFLqJ6eSbQ7XCsx7n6HFMdYH0FqWiF3Sfesz2j4XcgpROMW0jEfAWIX613Qm?= =?us-ascii?Q?2lgncrW5amvwv5CVKW8rxjhV2aYS35Dms7OYiipzE/eOIpt4yOafHbmeyxvk?= =?us-ascii?Q?Q4AbSvgtZ83wK4KA9HoUzrJ/+OCOUFUedKv83eG9nsoBPVgyzaxS2lhjeCPG?= =?us-ascii?Q?HHLuDcADTTEMosyow1FoX7LTFni3fp3qfIb+O7O0EwYhwAMsUSWZ6zoJly4T?= =?us-ascii?Q?SeeRleN+3ImOosotZnHDFlia8g4Q5yMb1kPptXAx1+UYsacLlX+jO+Ld7FTt?= =?us-ascii?Q?rTTaKE99UR20xx3AfkeTXwH3dYHjtlOzhmuqI9wz9KSnjCduIg9qJNEgvnip?= =?us-ascii?Q?39dGsTGovMlcrgUuQK3fLva1ttPv0AbLMcVxm2VWAGy507qhCHTqs+rvqZfM?= =?us-ascii?Q?xYMeq7Wr3XnQMqpBKiitieevK/hjD8FrratDtwZY977Sl5jA9D4+xzTRVOCa?= =?us-ascii?Q?0aEgb59ojqcShBoIj3fuM8Kn4YgFO2jX8M1kHX63NfnFb9+uT2jRtI49pTjz?= =?us-ascii?Q?Gw69mZUtvVJqrtKPDglEgZxmuuilmayFuThz0ezeb2P5dZDyWSIIOvqnLvmF?= =?us-ascii?Q?mxqTgQQm++gIYXanBtY1MMYwsUhhSlBpzxulYT0vI1CcfdInM52ok8+xMg8G?= =?us-ascii?Q?sbvl2SKmjyvH4aCco/6X2lqpWVpH3L7S9AUICm/UbTw+LoeOL08j0RGPlmy0?= =?us-ascii?Q?TtHZzP9SdG/ZfWD8kosanB2XJ0DCaipwakldhPI1UcD1rkjRDG0hHF6iszQo?= =?us-ascii?Q?ny5nm8/QpDR1UamHt65licDxAd6qRl124iNy0YBPTI4bZuAyOJtPMTTY1EyJ?= =?us-ascii?Q?NKK144ZJQYum9DtMpPqx+eflXIrb2hDavS9LQH8mzRGvWWU2ybejM0P36BeA?= =?us-ascii?Q?v/6mSpR7zL8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR12MB7726.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9OXJ6m0niKkmAUGpZGYkvjFEFmgdYpTcLH28LCPUA0D7RSjVnsR78/LIfA6e?= =?us-ascii?Q?nIeP8J4pImdROSCghaidyFSgngEFCGL02EPGwxZtCl4lR5jmm+eVDYRJlELP?= =?us-ascii?Q?snReSWThy0TGMoefPsLm19Z/n9BuHyyqrT+Uo2Qi0vM2sNDTLY6aPOVkYEFx?= =?us-ascii?Q?JKVpUsGbtGM/ZryBX/lgjCOyvq8K438/G4pXOcWNTLXizLKmkCwzcJqCIgOx?= =?us-ascii?Q?vd07N1xfuc3EiWXAPtCfXkBBOoEhSNxeVfZoNUKCXO6E8MIaMr2crCAbzPC4?= =?us-ascii?Q?dXOzecbCiKF5iH+BGJ78a7GTT1xejaJubF9QyYYtmVGMbft0kT3RE8xgDdHd?= =?us-ascii?Q?oymKh+UyAf+QumC/jacWsm2mXDCzhTMceMp7Fu5sKpyP0vETWIPnjanZWF1L?= =?us-ascii?Q?HJgYqV/qfdCFJg9FjiqSGtUfNT+q4Wc1tW62nssaoBVZnJ88Xnjbq1qz6zN5?= =?us-ascii?Q?kY+pw7rCxmJzUEaosyBcvZcUgc/BgWokSJ7RDuGW0nwfxC55sAwRvSUDEgPe?= =?us-ascii?Q?5OFb3xNOXYPkt1GmHqe9JBATzZDUbGW5O6iewKyYnDXOm/maqq0oDtD/cs2d?= =?us-ascii?Q?9zqgOz9RuktYzGnSgO3VtFQgTc4tDMg5t5GJFk0OhtD+ue0WX3nl/6/qaIm0?= =?us-ascii?Q?sFz0CRqS53BU3HnxH56SPVllZVPFVDjeb5Vo9Rk4pPfNMz0WTvN7SFLb6XXP?= =?us-ascii?Q?kcc2xomfXNp9qB8eagAfIX0G2HxOuTpqEjUL8fNoZ95X2p/W6+zeNwbGBYJN?= =?us-ascii?Q?2k9pZ8deLmDy4MN8b9mGG8M8lyhmh/OLdLWbQPUY6RYlJNaTo98i39U97W9c?= =?us-ascii?Q?zJnL+2z18NSOdNG6Pwn7C9xTV75LPdgTw5lu479cp4utszDNQCma53+68ncM?= =?us-ascii?Q?5Keb7Yg9FF8qOBbtsmDBnPzslY5/IT6JBXgavxRXJqY11onQrN3hk8r2DIrN?= =?us-ascii?Q?nWnvhFImRQMhTBKvxpwuJXTfTfMhs6xe3GDbmLAMxuG8EoHHV/PDHELgeidy?= =?us-ascii?Q?nneL1XoMTzZIXmjSUvOiqV1WgD4dUj+ediI74AqzD9MJ0UpWvczvwbg6keGA?= =?us-ascii?Q?WwIMMo7xJeBj0Dm2YtiPwzTwYq9VSU5TmZswxclQh/aLLBzVUYDGqrwk7b6x?= =?us-ascii?Q?xhQa0z3mfkarK/Dk5Y1yA528ZmOhovKk35CYSIQ+KrR4exBU7mBFpZKn7YZq?= =?us-ascii?Q?nepG97618sxdUd77Y88YKAN1LKQQhEQgfEZl4jMwAosaYMbYa3hcWvegKT1Y?= =?us-ascii?Q?0JpUwpau5wqDHrrTOgo71kgbOs+BobvdJC3MBukUupRaLGb0bYdlXx7bFWx+?= =?us-ascii?Q?qMBOcU9Zh6At99inQiDwhgfSVMzMKgrqmdv3FhCsMI6iBX/SiyeCqugbWOZN?= =?us-ascii?Q?ob6xB2Jm3HNTEB3ssHAIX2MKW2L2ngjSe74tY90x4EgnFFQTHqqcTEwLJ3A1?= =?us-ascii?Q?bsD3DaAIOy31DmuGY3Djm8Zlwy0JpBpbhULdA4Ptzls3CowBqgKZn3l+Ul2D?= =?us-ascii?Q?ZXgPas4seTBy/ffZdp5qhGf33UrVi7Aob0D3bs0DhGHyWJENa8XISiTL8bWk?= =?us-ascii?Q?AS7zSVPnHFnEkpLY72hn3+Au17aioH0bucKmbgAi?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c53c999-daa8-4dba-cb93-08dd7aebe11c X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB7726.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2025 00:32:47.2754 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5fKfzMCGDGcsXDgkyFf69rDRWKftTAjmVrThszX5RgIfTUCVRiF/dpQO34vif+WKrMcYV8qtpOCczS5w8LS54w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF4CBE7339A X-Rspamd-Server: rspam01 X-Stat-Signature: bxwsub6cc9zwmmkxshrgf19fiwgsdxdk X-Rspam-User: X-Rspamd-Queue-Id: 517D6180007 X-HE-Tag: 1744590771-356840 X-HE-Meta: U2FsdGVkX191FPc1/D16mCotLzh3jLBs9/0yJqza/sZN4eYOBSGFmOy/YENQNWhueCc5XEloJ0FFT96C7CTN4FtCp8VU0PZdaJqeUtTW3fK4da/FXh9e5mBCofM1UfA5M1eibz4JHe578lClGvXWsS0QY2cvJy6QTYvGzXyDkVmKOwObHxjbPnP9WKeDCk3duzR//soHxqwFh6J9nRcAjFhWwZtyb2lDVdxZW+hOPxCfu+GNiCr/eYJvT5VeaaCdNVVQwoxYtb3YxT7m58W9MmYTrCvWTDnJXQUguGPr7ZfKmIHNOOQkdkg9F4XcgM12ptF9HDxtejsfsVzl8L71lMr/ZXSErSXQF+bbrbm29wjT9i4Y9Bz3nZSVVJmaXxGoIrikN7jL9cqCoxO7eWCGke16l/V26U2DB8GSOhfk0Nhc5cwziIXdURlqh9DsgXTYJfjVmbW9M+OdZf9+ms9qyYKsPlw4EuGG4Pio1FkJPD1arGZLf7GPoiFSw2bQ/w9vqapRy1U1F3eB/l9QBDSY2BOjSkvpDR9HpvQmstH/tqzb+qpKK4ezE1XK1b8PrU2YYWcp9G7C99vi6c30PplsmpzWyvLeKsrRUfg6qnya+m2rt0rVjnhBDkZ4PrMaGJaHkTOp7er++4BG/jv/GLXyH36EOxFKDLurK4+/xnjkdXI5LG5kCYw/MH/UB4ENvH4VprAPfcem2kKB0xAom8OFcXf/PYTM0WkSQLKKf6BX0Zl6K/MAiHB5y6U6msdi8StN7eO6lIgJDaViJ3Ma4u6JX51KAJTM790tQEXloPnDxyo0MffvjKInBm5krVPel2inH5wSwrS2Oqy+6do1Hs3BzfLD2LNiroJOpwrHofpKh0R0JWKH15e15wAHEZ8w9vSeqfsePTtt7mrd7kQFbN/ObPxINC1b7SANAlQCPXQI816RolAkC4CJaBn91ZXc8z540ubRPGzwuKJ0LPv/KY7 RGXV8xl8 AJsAY9Lk8dBeLYDLov4S0HHRl6zL3d4hC9sdcgCg4HzZhv1M= 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: List-Subscribe: List-Unsubscribe: On Fri, Apr 11, 2025 at 10:37:17AM +0200, David Hildenbrand wrote: > (adding CC list again, because I assume it was dropped by accident) Whoops. Thanks. > > > diff --git a/fs/dax.c b/fs/dax.c > > > index af5045b0f476e..676303419e9e8 100644 > > > --- a/fs/dax.c > > > +++ b/fs/dax.c > > > @@ -396,6 +396,7 @@ static inline unsigned long dax_folio_put(struct folio *folio) > > > order = folio_order(folio); > > > if (!order) > > > return 0; > > > + folio_reset_order(folio); > > > > Wouldn't it be better to also move the loop below into this function? The intent > > of this loop was to reinitialise the small folios after splitting which is what > > I think this helper should be doing. > > As the function does nothing on small folios (as documented), I think this > is good enough for now. > > Once we decouple folio from page, this code will likely have to change > either way ... > > The first large folio will become a small folio (so resetting kind-of makes > sense), but the other small folios would have to allocate a new "struct > folio" for small folios. > > > > > > for (i = 0; i < (1UL << order); i++) { > > > struct dev_pagemap *pgmap = page_pgmap(&folio->page); > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > > index b7f13f087954b..bf55206935c46 100644 > > > --- a/include/linux/mm.h > > > +++ b/include/linux/mm.h > > > @@ -1218,6 +1218,23 @@ static inline unsigned int folio_order(const struct folio *folio) > > > return folio_large_order(folio); > > > } > > > +/** > > > + * folio_reset_order - Reset the folio order and derived _nr_pages > > > + * @folio: The folio. > > > + * > > > + * Reset the order and derived _nr_pages to 0. Must only be used in the > > > + * process of splitting large folios. > > > + */ > > > +static inline void folio_reset_order(struct folio *folio) > > > +{ > > > + if (WARN_ON_ONCE(!folio_test_large(folio))) > > > + return; > > > + folio->_flags_1 &= ~0xffUL; > > > +#ifdef NR_PAGES_IN_LARGE_FOLIO > > > + folio->_nr_pages = 0; > > > +#endif > > > +} > > > + > > > I'm still not sure if this splitting code in fs/dax.c is more similar to THP > splitting or to "splitting when freeing in the buddy". I think it's > something in between: we want small folios, but the new folios are > essentially free. I'm not too familiar with the code for "splitting when freeing in the buddy" but conceptually that sounds pretty similar to what we're doing here. The large folio (and all pages within it) are free and we need to split it back to small free folios ready to be allocated again in dax_folio_init(). > Likely, to be future-proof, we should also look into doing > > folio->_flags_1 &= ~PAGE_FLAGS_SECOND; > > Or alternatively (better?) > > new_folio->flags &= ~PAGE_FLAGS_CHECK_AT_PREP; That seems reasonable. > ... but that problem will go away once we decouple page from folio (see > above), so I'm not sure if we should really do that at this point unless > there is an issue. > > -- > Cheers, > > David / dhildenb >