From patchwork Tue Feb 4 23:12:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960170 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 DFC45C02193 for ; Tue, 4 Feb 2025 23:12:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC7BA28000E; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E68A28000D; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 43E7D280013; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id DB0EC28000E for ; Tue, 4 Feb 2025 18:12:18 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7D6ED80303 for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) X-FDA: 83083812756.02.7D490FD Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf29.hostedemail.com (Postfix) with ESMTP id C42F5120008 for ; Tue, 4 Feb 2025 23:12:16 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=dwYwqC0B; spf=none (imf29.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710736; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Z9eItY4c7G0s+c+amJ06bcyD3TNKrS6Yw3t1FzanFdU=; b=tvZoae0PNnvXmj59NdM/FeVuItlNBQuz0FFuYjivC2C2MszY7HOSZ6SyXOVLFkVolgYL15 9Ezg3CtWbQdOf+h9xzT5USk4Uy0GyZ4l2tJP9Yho69KyxJT8LF7hqfLf79NSGUgQCBHA8B XnHfyHRlYMAylu1NJmyWUSpu4z6q8Fg= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=dwYwqC0B; spf=none (imf29.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710736; a=rsa-sha256; cv=none; b=cJHvLICNS9XRHn1xcjbP7wkocsOxUEZCv4bJHLBvyBoFI0pmKGeZfu3UDbo+wlnKL3dzxD +frOqmYTXzhJBtD61oI1Rp3Qp8a9XE/Lxl/oU/ohT6opyoJmXAWT1IWHyi41sxrbJI1f+q JCjw9xbHUz0SngQRDD6bkdHLgEo7nk4= 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=Z9eItY4c7G0s+c+amJ06bcyD3TNKrS6Yw3t1FzanFdU=; b=dwYwqC0BnaxfmaHsYRpSVX1szZ y51ea1k/HUWuGbfBMjZT8cR+F3m8SputDuamldmdZf26OFtaPx0ElsPayezYJxgw5K2dqiPUuWrgS UJwLbSyAoStA48qFVkBvCVCtSVR4ODs+VlzjWMsE33dibGXHO0jLRbZyVe4qM4di5obEtKYv3Rg+0 nBqbJHk/Lou9nFRSKHo1AS/uxHZASXTQ7zj3S1vbwUFgoeF0JCya92/amtnBc5LMYrhRoNzQlEpIs Qx+Mz+ZbBjWgGnIVp7mVUFaVm60IxAVsd/bddgwX6rQogTzV7PwUcb8tsSLx/dxLiQO8+lkMBa9dO 8hsBmURw==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhM-14jK; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 1/8] fs/buffer: simplify block_read_full_folio() with bh_offset() Date: Tue, 4 Feb 2025 15:12:02 -0800 Message-ID: <20250204231209.429356-2-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: C42F5120008 X-Rspamd-Server: rspam02 X-Stat-Signature: oasf6mcq9f5351ent8ikt5mmcob5p6i6 X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspam: Yes X-HE-Tag: 1738710736-944621 X-HE-Meta: U2FsdGVkX18QHHw3H/6hPpqX+UmBvjcZjwj7njLm/He1ZqPCOd6DzwRd0/6l9X/Exl2tyYhnLCE9QKp/WH9dg3UQepXOmLMn3a14PPGl0qwX+SeYQWcwrCM0XInOuZwydshrOJY77Ojw1/cSJq10iolEZ5HnRmmVAJxKmrT4FfdRewj+8l0RemBZi2b8Ktbl3xzZlp0xnnyD5acxHQvmsSU+hk0dkbWDMsf1VnPLCKCIhBfMhWTVQ8EulQ+1D2q0zlGXZAm3G0lWK6RJ2HWqSDoKTaqmn2eJuCSPLR7DAtRW90jK18U670qimxBD53owLID9sz5e5gd0ctXu+tTeWOGBGhDfc9lpKgrFxroDj3a9UQNJ7/9esJCJ9g/qy4mQZ1ySFFpI9OjgQxTMP3Uykrmx5vPRtnF90tLjh+pVd6xe67x4jEGgXjSxdyVt52k9GHdpB88j6jH60pXsgp7Qw/+qi1Anm1Ad8xrgESm4MUH+vvQyX3BOex7ndNBeB7r0kiHRRN0vN/z52MSm7l4Rt3ekcPPBHR0kDiO75IHlVQ4O7bt4EdPyPzjU5aPW/oiEc4fX6NvMaRZYermC8zS3dqBQKHyNrwxQo+KDe1EYsI9XssGqh+rcSB8Ya4JNLii50aBrE+5EbJXlZm6DxvuPmmboj6V+xK/emCpEgLFzRplpC8pXerpVHkLCn8lRJMtWN0wFhk25vq1jvltkXvGfDJiWv8BQyjaDlVmnL1a7baH/r1LV85YUwe2j2eQssBHjSnhjjfnwY0nYtI21aURYGo0h0OA2+Mqgy6o1lzl6qVA/gjY5wxBQkg8YQN3ZF+QPeCJvHGE6DL/p+9NMaQcsVwlpjCwnQYroPqNlqiw03jfejTQSmSBWJ759R+udkuiWfirZ0Cf9mueFaAQsU2mfmhvK/FX8LefRYclbgFqgz1RK3Y7bCWKyx4X2pzF+ajCdOsPSWisLowaWg/sfdWa tenU6fGN K4dmXMT1h0dIP7v+L9ERqMNYvNbGnHNv+19SnH9pvaKnfaq5OMzcQG0x9DP8gjy4mda2xpCsT7a7AMvEQJ2DR4zHkDdqg3x92K/qhyp3VrGDTHXAJikVt99cvZKqZnQ9F0oCiQVPh6SGSqeVncSXmFD4oj4V0MW142FM6Ryn6A7bisd8xzxyplO9LxVVdgfvj4QW4uV456Tp9NZ6KV5xWzmF1G8cP7Sjo7HpHTq9cK1m8MVaOLm9la8x2ddPd6nzscxUvZ7FHLKhRiCtxhKdY+xa3ge8HsxZ6kA6SbL9dKPrIlpLaj+ILVjjbZBwdYMqiik4r9n5pQhMnOWaXYyxLJxfUsMGXPZP+2M6/b/5KteNHlrywnVcQjKvDRDOpnfYSvSBWOK75nN4iAyk7gXzUXYVNrn1LJtrFKtSXfWzJzed1DJq8NFTVAXeoybcGg6h2ji8m6FaCr2pf4DW6AX06FDLoMZH8UsMcqe5IvQCaWzRYQA7i9JmCupal09xk365U1JISyk5EGi5LzbWI+vJs8tHvStTTQJ5oSvbGqgQWZLXt6CCjhup4UQz2dbDMYi4Iy/nBapZ7ViWnUCJEjwWL+98KsKusw2BxhN6A X-Bogosity: Ham, tests=bogofilter, spamicity=0.016058, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: When we read over all buffers in a folio we currently use the buffer index on the folio and blocksize to get the offset. Simplify this with bh_offset(). This simplifies the loop while making no functional changes. Suggested-by: Matthew Wilcox Signed-off-by: Luis Chamberlain --- fs/buffer.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index cc8452f60251..b99560e8a142 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2381,7 +2381,6 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) lblock = div_u64(limit + blocksize - 1, blocksize); bh = head; nr = 0; - i = 0; do { if (buffer_uptodate(bh)) @@ -2398,7 +2397,7 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) page_error = true; } if (!buffer_mapped(bh)) { - folio_zero_range(folio, i * blocksize, + folio_zero_range(folio, bh_offset(bh), blocksize); if (!err) set_buffer_uptodate(bh); @@ -2412,7 +2411,7 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) continue; } arr[nr++] = bh; - } while (i++, iblock++, (bh = bh->b_this_page) != head); + } while (iblock++, (bh = bh->b_this_page) != head); if (fully_mapped) folio_set_mappedtodisk(folio); From patchwork Tue Feb 4 23:12:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960169 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 5F265C02196 for ; Tue, 4 Feb 2025 23:12:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8D03028000F; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7735E28000E; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A596280010; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DB13B28000D for ; Tue, 4 Feb 2025 18:12:18 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 96BB7B0589 for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) X-FDA: 83083812756.22.E802ACD Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf17.hostedemail.com (Postfix) with ESMTP id E94C74000F for ; Tue, 4 Feb 2025 23:12:16 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=bLk3usnU; spf=none (imf17.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710737; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=AJ1b0u4x2rstuiVDqeFM5lSxnt8lCHKW5w+bHMF0FyA=; b=zLvVIUKseYVos4Hi9g6rDuoARRBMCEexTPKGRVGKoAiiX7ABAZnSdE9wCt8UGFTTdLDVTW 0KtY9tji5Vxze6dftsSH8Wo2YfnmDp/f81BjvCfEqbcs4CdmzzpHK2jSuAjRyWNTSAl5Yb VLkN4esb7vKb1nC+HUWCjr0TkqNISHo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710737; a=rsa-sha256; cv=none; b=OGnBDvJW0a4o4rD0RqrHeLjX4pRiaA+/JZctOzALrwBay5hnQbqxUT+JvP/KMJyZNHtCTT LIfLqBpZaFkmEeRCqoQG4yXZ6yk3kdcxmO6ZpSUiyb2vtdJFW94RTVVW1gPG5D2buOv1Bn 8+6JGg4aDRWpFFCbwyrMslyHmV3C7L0= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=bLk3usnU; spf=none (imf17.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) 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=AJ1b0u4x2rstuiVDqeFM5lSxnt8lCHKW5w+bHMF0FyA=; b=bLk3usnU7zD694D9cQlqCOIrGl Zxo2SpJ8CmrEnmdcSP9tTWq9KazLoLEJXfKmVyoWXHcZIIzXjNuhivNzLCD1GkFL9/Kj3aqWK86pS EzI+jZTF6PaJ5TBjJC3z7QZZAz2ATQJKMVfE/PH34cMBCPJjo9fAfzGGhOS+pylbC0D2dzUf77w23 FtQT5QLp0D9jcPgK6T8gfY7FY55KtdBlH01vUDo8v2ESxod5Zu+CxKgNXCTNQ820pC9tUpMAuZ/od qo3+wT5PtysGvfbIUhMxWAYLub35Ep2ZoLFFj5hMU+FkI2ef676zc86QDgnz2KnEuAZTgNELMIAL0 nK7kF1sA==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhO-1EZy; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 2/8] fs/buffer: remove batching from async read Date: Tue, 4 Feb 2025 15:12:03 -0800 Message-ID: <20250204231209.429356-3-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Stat-Signature: xuyokhydnrzduorb5a6oy7ocntf441ew X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspamd-Queue-Id: E94C74000F X-Rspamd-Server: rspam03 X-Rspam: Yes X-HE-Tag: 1738710736-758591 X-HE-Meta: U2FsdGVkX1/LyQPVFT8Mhno+Wr6gI2cOM1vYKrpvAV1i1LCgJIJ2nQdqeU6Dh8FKl5UigZgsm4+0Jxl0zErEKe2A61yzCbscvVTQSslo41UElruPpUnS3eNcWwRaFtxToFslaMftg3nTroLaCaaWIdXLkD3dz2E360PmqRFGDIzSV/rDpY85DZY6pYwgaoakYJPNErNb/Pf5r26owZ0kp0LdknUiTok1bG+d7krxmNPthTb4uF3Z3RtlWTnVMRgbF5/aLI0Z0jm97Ht2akLn/J4HZ1SGh7MK5cEjrJB/HXU80jOFr7rhoQImPyu6Qvxf28OH8cMPbsJiiUtpRvJ74ME46RVxB+Fkb6Hdzc/ea5pGZFWAT2CVxpkjfUZcCMD+XmXpvPrqBxcSkH/+Sqj8Tzlz0fTNQkYNikp/VL0Aj4H6C1SW7Y/CagJAjbD6xCX2AwvKU4V7Hy4kg7Q62K264neJy9AWpuQvhY/HQCZ9R1vWJzFkf6dWRSjuhrJ46O9WJLKDibRuFAlHLMuNRV4zJq0mRopUQ849jslEp9JJCdEUsUNsS27qzc9kr3so1nXlfeCaayF7Pv8QkxcvscH3BUXrAImPHeP9Zl9+udif4D1792s6NJ/YM1QqXASUykKnArXpDdxIH44OdaLG1CLD+Bg6cG9DBOj889qVee59VD71emrngr1VsQpt5vkdIKQjCls0x2jadgPni3RnMD26O3rYFDBsjL3BTfUxsJhOyzyDKkSrgeH8O383z0kbEVIvvdKiu/b+jWOC3qN04EYiNlBotvTCCsO6vUnZYkfL+gxWl++KWZLnb+X9HXSiXuhRVTYivz2ANNCu7b+RwKLHwRRI2Ev44krGjIrBeJCuuiXh3uc2UpPtx6ozmdTCZ9oUho1B8V6/H8ghVbQLVD9+99dxTqd1z7pqZuJt2ZJ0j6seUfj2xVk8LiZGN4xQICTOODUeN7nNh+uT+Svp5TP sN4UU9x2 YnKwBQeazjhmZ+loCfsi0GzbR2KIEn3ftOENy7QnTwErbopPx9iLiY3dXzDB9AeS6FPbaNTJhWwtX8he+VKWyw5Mg/3tfOXwaxVo41Z/3xh+rEDXsqTDRzHMsVKK4ZJ0Rj+mK7QjpRBD4Gx6KgZNeglf9u925YAQsdtU4EMmPYlrohG01lfA2CjSlbaPsdN/tHWljHfanT9oyWMKJkRyvEEIr91GzTqtP9hKLBbyEO7nj6r5mf9wPrhGB0blyzLO1cGKfr3Vc26N1VSZiqiLIGpWWtOoQ0jeYm8wre0sALkQd/BDyCabbVellVsPu7dKWG7A1KQ0gzguVQoUufO2tV0VPH1Nk/oGji+HNVBFSsDmlf/faoKkiiTA6G83q8T0nSUBhyFtFicQjMXIdo3nNn4CuMmc0tx8aDVbqcZ5lbBPlM64Jcb90iiFwqPIjhGFI3TNCuqSUHsPfrWcFAwBNRvg650nVW7URpsX2+ZpEm2kvws7V0kg7mdBSUdDRS4aT4FS5sjR4TXh96/tAsFNFDXkL/EDx6qaIn1q6bavAt/3FlGXfSAesgWO9Gg== 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: From: Matthew Wilcox The current implementation of a folio async read in block_read_full_folio() first batches all buffer-heads which need IOs issued for by putting them on an array of max size MAX_BUF_PER_PAGE. After collection it locks the batched buffer-heads and finally submits the pending reads. On systems with CPUs where the system page size is quite larger like Hexagon with 256 KiB this batching can lead stack growth warnings so we want to avoid that. Note the use of folio_end_read() through block_read_full_folio(), its used either when the folio is determined to be fully uptodate and no pending read is needed, an IO error happened on get_block(), or an out of bound read raced against batching collection to make our required reads uptodate. We can simplify this logic considerably and remove the stack growth issues of MAX_BUF_PER_PAGE by just replacing the batched logic with one which only issues IO for the previous buffer-head keeping in mind we'll always have one buffer-head (the current one) on the folio with an async flag, this will prevent any calls to folio_end_read(). So we accomplish two things with this: o Avoid large stacks arrays with MAX_BUF_PER_PAGE o Make the need for folio_end_read() explicit and easier to read Suggested-by: Matthew Wilcox Signed-off-by: Luis Chamberlain --- fs/buffer.c | 51 +++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index b99560e8a142..167fa3e33566 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2361,9 +2361,8 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) { struct inode *inode = folio->mapping->host; sector_t iblock, lblock; - struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE]; + struct buffer_head *bh, *head, *prev = NULL; size_t blocksize; - int nr, i; int fully_mapped = 1; bool page_error = false; loff_t limit = i_size_read(inode); @@ -2380,7 +2379,6 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) iblock = div_u64(folio_pos(folio), blocksize); lblock = div_u64(limit + blocksize - 1, blocksize); bh = head; - nr = 0; do { if (buffer_uptodate(bh)) @@ -2410,40 +2408,33 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) if (buffer_uptodate(bh)) continue; } - arr[nr++] = bh; + + lock_buffer(bh); + if (buffer_uptodate(bh)) { + unlock_buffer(bh); + continue; + } + + mark_buffer_async_read(bh); + if (prev) + submit_bh(REQ_OP_READ, prev); + prev = bh; } while (iblock++, (bh = bh->b_this_page) != head); if (fully_mapped) folio_set_mappedtodisk(folio); - if (!nr) { - /* - * All buffers are uptodate or get_block() returned an - * error when trying to map them - we can finish the read. - */ - folio_end_read(folio, !page_error); - return 0; - } - - /* Stage two: lock the buffers */ - for (i = 0; i < nr; i++) { - bh = arr[i]; - lock_buffer(bh); - mark_buffer_async_read(bh); - } - /* - * Stage 3: start the IO. Check for uptodateness - * inside the buffer lock in case another process reading - * the underlying blockdev brought it uptodate (the sct fix). + * All buffers are uptodate or get_block() returned an error + * when trying to map them - we must finish the read because + * end_buffer_async_read() will never be called on any buffer + * in this folio. */ - for (i = 0; i < nr; i++) { - bh = arr[i]; - if (buffer_uptodate(bh)) - end_buffer_async_read(bh, 1); - else - submit_bh(REQ_OP_READ, bh); - } + if (prev) + submit_bh(REQ_OP_READ, prev); + else + folio_end_read(folio, !page_error); + return 0; } EXPORT_SYMBOL(block_read_full_folio); From patchwork Tue Feb 4 23:12:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960167 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 99454C02194 for ; Tue, 4 Feb 2025 23:12:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1AA8C280011; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 13328280001; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F140728000F; Tue, 4 Feb 2025 18:12:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id CF98428000C for ; Tue, 4 Feb 2025 18:12:18 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3B42EA0318 for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) X-FDA: 83083812756.27.76C78FD Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf10.hostedemail.com (Postfix) with ESMTP id 68BD5C000E for ; Tue, 4 Feb 2025 23:12:16 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=IHtFMQGC; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf10.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710736; a=rsa-sha256; cv=none; b=MLNCoxm6VkSv5Zer2OdlkYrMdCctm6C8swjN5X4betAQbKdtDzCrY9eMN13ZPDZO2sLQ1f Tr0X7yjxAz0jIcLWTFWMKxGWbgw/wXzkJJlQBH7Tcpi46sl3V2OXqnVJowrjSLDMfyBKOB g551dNha6iKtE9Z2PmDeQ+GaKTDM1nM= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=IHtFMQGC; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf10.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710736; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dx9mRi5amWVcM0ecsur6IbVdNelNNovE80LuaqvVo+c=; b=62FJ6CQPcNkn6QCYrXMXH49WQEzbozD3HUJ/xceBHkLZ4rb4Gx90mXAOAsd9bOf6WxHnmH CqT2+huzeOA8hS7UoU9HzbKFOpcsCU0XtRsjZpW1ohfEyWORh27/aApRrxCZpVSKSRLcK9 c3vTKFl9SNcdXGCYLquknbDVFDUVeCM= 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=dx9mRi5amWVcM0ecsur6IbVdNelNNovE80LuaqvVo+c=; b=IHtFMQGC1lK7B131euedd45YPt nvZXb+Eg/WELScuPXyzcOvYG5gWjU1eXe++DWyQ+PqIpGdRMjXPlrkWuXofu9nDbHrNeXRzYrzPpH sYemqQLRrwX9oSG97zypNzZd1Z0nKV2MhFdmFsi2SRLxWUw7R66nAHOcgFB8KEi1u2Q14RXLCmv0q 71XJQ0YgjmH6eipR2q3wHm8hoYFC61FAadJWvmI6TPp0Rf5otCojled0yolTsPGl3yosS0jCJwNb9 1ZKv0Oqq+F+DsKYrgflgR1rtAAqpBL/9Iwj9Vt5eTq5STdHZjtIZ+XK1owFLcZBUz1HOv/ZphMXaU U/pJyBtQ==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhQ-1MeY; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org, Hannes Reinecke Subject: [PATCH v2 3/8] fs/mpage: avoid negative shift for large blocksize Date: Tue, 4 Feb 2025 15:12:04 -0800 Message-ID: <20250204231209.429356-4-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 68BD5C000E X-Stat-Signature: bhximezpss73by68uqd3jx5ctni79ktt X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1738710736-485145 X-HE-Meta: U2FsdGVkX1+88i4FrzQRO+M4bxzaMxVY8APXzI0/5fHjucUfDsb5nMoYYzFZpM3WM0eRzmWr3vHkGiMIJ5fsR3X6drz4wRd/WbIDYtFO3hF8Y416yIiQhQiLGwFD2Q+tT8Hh35cM/6/QqY0usaCNSTQ2+pgIYUZK+1X9NJ8uR8M52CtB7ntPEv/n9/zSi9WiI2iTpCtqH5AUvLZ/vuaTpzS2Ft0IgAi8+rZEe3C7HTVN+xNe3kolnEa9hlQxHQ2CtZ0LSLfagHw9CbnnpmbDfgKlWTE9nq6DN9twtbU2bJJTEKM8ofTV5rgOYdEFCU+gJYmjxQOB/DSuEuKTFOjlQxJQKJVNIw+OapGkOAhsjjxxZmgVbMtIAL9h1kf5NNPya8iecZdb/XI2QDRAxhSMtE8cK1DP8UTlyN8RXe9TtjDCo97BY5TAl97htADmveSfaSyl4jvVWxp1cy66p7NF4Bc86bno8/+8ts8cxbtuYfFYoTP0Uo7u0CNyLmVInzgCT2WTm8xfX9voxYTxE2fBXuLNgrkXJgJwiWdtS2Yc98u76ADyCcIrfLrWZW3i7iT6ZIMT8uQOhoaP75/7p6EnDovnNd6GOXxan85QFgPb2b74ltiS84HoAOE1j/5Vf/lIN35E/EDURWYzBDvFW/O1WuzWiZOX04YDO4WwO/jBsiaB8VMi0yrUabCjmWXT5631zOAAhVLMjkS9Mm8p4NdTRZEw0RZbaibZjleO7JpxruHE9nJoWAZwGnV3BF7IQnoakJFqy8yxkhppXvCWMrWWmjLmuBu+rX1ImgRby1y4xVmZwpj17UOz6i9OLoY/DYg7gcz55SCM0oLMwhpZQv/0nCCubxwE19DXcW0VpALaBFxEQa+I1JCmoYybzXGTq77RCmDL8mGCqZx8fisCX4ictjhlyRSz2Uy1F/KEL/swJyCrhrysk8522KgSn7UbRPHALoyUYi8hhQe/SFj3deJ XJvJIA53 PJPg6nDv5EyxjhpV4c5LxqIoFBTXtPJoSr8SDA6kx37d49Y+Acmhd4nATX8l4t4WuwZH3SjbgblCK3ll+CYdI79zfTLC/jqLk6yooIdG1BDsWO2cpIDrCxa1q+HRy39SH73/ILktSCK7enHkk6Zsl1h6kMqKdSbUtgSITMFnfNn0eKvI2kMuwjnUKvtB9x9RfxEnF3J2JuMrhDynzzJUTKjSqDy6zp28avnj1BtVI+m8JVdz6TGUZBX7i2xEIGrUPoOGLQT5hHOcZE+zganSXMeqjF7qe6QgsoTvDUYBpSIsBBB6F52EMiQz6LnG24z99c70gphuM/mWLiHDeyLCIkbFqTaysZXBlZ25o/UIw/udZSKbMyIGtZXa44ig+t9I7629LD9KLd6CKegcRHIKnzWA4uI2WFs0OTYyV8j5mkmVrU7CXHnWHqYQiQHTUBbZq9rtUglT3YSepZUKJj3Cdydq/NiejdiauuGRPAKdDAChQ2wyckVhWsMlCOA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000008, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Hannes Reinecke For large blocksizes the number of block bits is larger than PAGE_SHIFT, so use instead use folio_pos(folio) >> blkbits to calculate the sector number. This is required to enable large folios with buffer-heads. Signed-off-by: Luis Chamberlain Signed-off-by: Hannes Reinecke --- fs/mpage.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/mpage.c b/fs/mpage.c index 82aecf372743..a3c82206977f 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -181,7 +181,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) if (folio_buffers(folio)) goto confused; - block_in_file = (sector_t)folio->index << (PAGE_SHIFT - blkbits); + block_in_file = folio_pos(folio) >> blkbits; last_block = block_in_file + args->nr_pages * blocks_per_page; last_block_in_file = (i_size_read(inode) + blocksize - 1) >> blkbits; if (last_block > last_block_in_file) @@ -527,7 +527,7 @@ static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc, * The page has no buffers: map it to disk */ BUG_ON(!folio_test_uptodate(folio)); - block_in_file = (sector_t)folio->index << (PAGE_SHIFT - blkbits); + block_in_file = folio_pos(folio) >> blkbits; /* * Whole page beyond EOF? Skip allocating blocks to avoid leaking * space. From patchwork Tue Feb 4 23:12:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960174 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 285AFC02193 for ; Tue, 4 Feb 2025 23:12:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9E8F3280010; Tue, 4 Feb 2025 18:12:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9945128000C; Tue, 4 Feb 2025 18:12:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7E844280010; Tue, 4 Feb 2025 18:12:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 413EA28000C for ; Tue, 4 Feb 2025 18:12:20 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EFFEE47337 for ; Tue, 4 Feb 2025 23:12:19 +0000 (UTC) X-FDA: 83083812798.28.EC1929A Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf03.hostedemail.com (Postfix) with ESMTP id 3256A2000B for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=e+b994xu; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf03.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710738; a=rsa-sha256; cv=none; b=OoiGnCICbAaDqD1OwWCmnK0fFZTHOXIHWmMbuaJ3mJGmkYWwnGByyB0ipMkLO83bX2KUGk VNHUbx10xMkdwdc05kxUJUt/DJRXz7BJOoy8d9WobgacVxpO2h0YeoUx3lDF485tlxrO/q HKeiDXpFHR92ycwPysmnj5I3J2n1f1U= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=e+b994xu; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf03.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710738; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0Z0iXLDDA0FqixDntgSkkhZtkEsfKRvlixQFpa6OzQk=; b=lUnfkY4zvT6eDr6z1uR8XOCaFRTBTAIJRAL0tPP+UltU03xjejGcvjNFOHVzoOoAwL8cKk hdp7oeJEZ4aLVa7kPw2rwsEs6K2s6uCd5GsDkfkMQSsip8g89YarUSs5tuOkb+JBi9bu3O 2bqV2V3GGOnlZBHb9WG5j7p6F1lAhvE= 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=0Z0iXLDDA0FqixDntgSkkhZtkEsfKRvlixQFpa6OzQk=; b=e+b994xuT1jXSNuGpGkSqkCp66 fajUl5jWltnA42/bzNM/j//7w0eUOCresTP1juGfRIh5OaT75uo/XSWJEMzCU7he9Sb4DqvWCg4uZ 5wPQ5za3OmKz8WCNUIwfGRwkRk24ntESqzdUsl9DB4/qqTdc5gLDt75XA5Ek+/VNqhE184cBuDoHJ c/6w2JszvSjEKh2HkzQEGguaP/Uq0C9q+G4ER+L0aXmGAopqgDxStHv6eg7ILUP3YKoB7J0bDGanm OkEuBowZZqn3npGN+mWhh7tXr60CMZBl93t7d1+KlLd/kNTzdvuy9GurHHCzEUQilbi237AjyYKw+ 72YC6mlw==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhS-1X69; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 4/8] fs/mpage: use blocks_per_folio instead of blocks_per_page Date: Tue, 4 Feb 2025 15:12:05 -0800 Message-ID: <20250204231209.429356-5-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 3256A2000B X-Stat-Signature: oiaqgrhxap5cy36bgbaijx6f6z7d15su X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1738710738-737397 X-HE-Meta: U2FsdGVkX1/HwnmNhDP7PNKk2xZheljiEWA6M5QU9xY3lt7tMSTaViVvEKXzXkVKOkyXa6N2IQll+Q218p4mFmxlqIsWyZwAzH+NCuVzklo5C11Ugxt75hB2W5y30m7cNGusnWHZMjUV67cn9n9q2DMMbSpFfFbWFhbuvibHZ3a9sr5BXayGeEpMJJWo471a+yQbi8voylEllI9oZIW32+1l60BvGH1fyLa6RzJHpOH6Ec+TXbNbuM6yB0NyGXd4kHaTTpYEJw703redfoRnrOH15GrcmdBbCyB4Xt5626qH4Z0QLyHYG9AmGHYgh93FpYMY5aEtAzql2DoPCEe85qomETMbe3m5R8HpBl0Kc+pkbJZgcz6SiaETyChCniOpmPZRZWmx0JBaMgkSqEUB5bghmmJKTxCDWwPVg1oSEWIswtz9OjHSoL1PnAZOvt0nnDGx4V3zsI252tyCLNUTPeaV2vBOYJZCJqpdptVx7nTZ5o79mmDTMCcr8w8pA1tVpf6tQsUgQqb3prq2R8tcgUDHW22gpXM3kEqfvYy/BilfDIMJbFJos21D6NUIfLTtEgX2b4D7hQswQqH+Q7SrA2ip3qo0TmAqdoXlxUpdToP9IYG6wnKwCzKYVANa+HyoNcOpHRNy91wkS9K57JqWjjFz3IZrNAg3eAYOYNsmsXm+OIeaXV5ZES2dwoaC9cBo45VX6IVU+UyCl0eGYknB1c9HYQbz0Ip9RRBcazmhqxb6Db4eT1tgiMPkX6qvtull613l6oOCy6I/vSvyKUij+HSXRSBa2nxashIF2/f8xGSW7gi0RF6hWzLq38P0t3il/nX4LK0IFUPEeMW1/io5Pw+wuG3D7DOGC3Olt9f2B8of0U21veAKw1EjUb0cCaylNJKlM+Mb/tF7b7Er01wkCi5jc2maKVoK2w+BSKRcVdI2h1InFD2j3PffAr7EfbXP/2rC2GrP6UQ1DYA+gNn Xg5vJjJa 0oURaqHQmnPUUkyQjlAy0wdIY8ikVKv9zQ80Fvd7R7xsJFNvbF9u9besf7Tr1DH8bDMH1xg8LFIPyWCW7XDoC4U8Q6i/h6PoPo/PNqFg5FpoIfEASa9feWy1ESP3sgx43luF1A6pSgQReQxMIhPMwrh33CjMX6kxkmr+EyGmd4MPOkyQ+nBB0ze5GY2nma20wgvSp7CB6Lld+JyvX7msLwUPHioKrZk6HXw5fcEmlMbaXYTQx8nnSlP4/zy+GhKXRy9Q4p1z81c70NBm53lz61qhVqEOs3/ZLljtFMt+Tz1IWQB1nuT03I8mZ5xzMpY40aeiQuUV/BjkK6b+d5LxxPMURrBTb8vyublppceyK5LTPpTkAy3UITbRcxwWVkExYl2N5Ti3Ay8Y1iCgnzN/tubWdJB25AEfRgmAs4l5zI1a14JASe+JgABVFKF/UcK2GWARBVvUG1eAkx9hSWMAzYJxa6LbDgmEq1QF8a30u3UsCJdxG+zP/jsfkNgwvAJycSTwswhlmCrlGSh9R7Pt5+Vc9WDlou+YdVlgEkC3sbN3I25k= 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: From: Hannes Reinecke Convert mpage to folios and associate the number of blocks with a folio and not a page. [mcgrof: keep 1 page request on mpage_read_folio()] Signed-off-by: Hannes Reinecke Signed-off-by: Luis Chamberlain --- fs/mpage.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/fs/mpage.c b/fs/mpage.c index a3c82206977f..c17d7a724e4b 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -107,7 +107,7 @@ static void map_buffer_to_folio(struct folio *folio, struct buffer_head *bh, * don't make any buffers if there is only one buffer on * the folio and the folio just needs to be set up to date */ - if (inode->i_blkbits == PAGE_SHIFT && + if (inode->i_blkbits == folio_shift(folio) && buffer_uptodate(bh)) { folio_mark_uptodate(folio); return; @@ -153,7 +153,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) struct folio *folio = args->folio; struct inode *inode = folio->mapping->host; const unsigned blkbits = inode->i_blkbits; - const unsigned blocks_per_page = PAGE_SIZE >> blkbits; + const unsigned blocks_per_folio = folio_size(folio) >> blkbits; const unsigned blocksize = 1 << blkbits; struct buffer_head *map_bh = &args->map_bh; sector_t block_in_file; @@ -161,7 +161,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) sector_t last_block_in_file; sector_t first_block; unsigned page_block; - unsigned first_hole = blocks_per_page; + unsigned first_hole = blocks_per_folio; struct block_device *bdev = NULL; int length; int fully_mapped = 1; @@ -182,7 +182,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) goto confused; block_in_file = folio_pos(folio) >> blkbits; - last_block = block_in_file + args->nr_pages * blocks_per_page; + last_block = block_in_file + args->nr_pages * blocks_per_folio; last_block_in_file = (i_size_read(inode) + blocksize - 1) >> blkbits; if (last_block > last_block_in_file) last_block = last_block_in_file; @@ -204,7 +204,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) clear_buffer_mapped(map_bh); break; } - if (page_block == blocks_per_page) + if (page_block == blocks_per_folio) break; page_block++; block_in_file++; @@ -216,7 +216,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) * Then do more get_blocks calls until we are done with this folio. */ map_bh->b_folio = folio; - while (page_block < blocks_per_page) { + while (page_block < blocks_per_folio) { map_bh->b_state = 0; map_bh->b_size = 0; @@ -229,7 +229,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) if (!buffer_mapped(map_bh)) { fully_mapped = 0; - if (first_hole == blocks_per_page) + if (first_hole == blocks_per_folio) first_hole = page_block; page_block++; block_in_file++; @@ -247,7 +247,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) goto confused; } - if (first_hole != blocks_per_page) + if (first_hole != blocks_per_folio) goto confused; /* hole -> non-hole */ /* Contiguous blocks? */ @@ -260,7 +260,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) if (relative_block == nblocks) { clear_buffer_mapped(map_bh); break; - } else if (page_block == blocks_per_page) + } else if (page_block == blocks_per_folio) break; page_block++; block_in_file++; @@ -268,7 +268,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) bdev = map_bh->b_bdev; } - if (first_hole != blocks_per_page) { + if (first_hole != blocks_per_folio) { folio_zero_segment(folio, first_hole << blkbits, PAGE_SIZE); if (first_hole == 0) { folio_mark_uptodate(folio); @@ -303,10 +303,10 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) relative_block = block_in_file - args->first_logical_block; nblocks = map_bh->b_size >> blkbits; if ((buffer_boundary(map_bh) && relative_block == nblocks) || - (first_hole != blocks_per_page)) + (first_hole != blocks_per_folio)) args->bio = mpage_bio_submit_read(args->bio); else - args->last_block_in_bio = first_block + blocks_per_page - 1; + args->last_block_in_bio = first_block + blocks_per_folio - 1; out: return args->bio; @@ -456,12 +456,12 @@ static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc, struct address_space *mapping = folio->mapping; struct inode *inode = mapping->host; const unsigned blkbits = inode->i_blkbits; - const unsigned blocks_per_page = PAGE_SIZE >> blkbits; + const unsigned blocks_per_folio = folio_size(folio) >> blkbits; sector_t last_block; sector_t block_in_file; sector_t first_block; unsigned page_block; - unsigned first_unmapped = blocks_per_page; + unsigned first_unmapped = blocks_per_folio; struct block_device *bdev = NULL; int boundary = 0; sector_t boundary_block = 0; @@ -486,12 +486,12 @@ static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc, */ if (buffer_dirty(bh)) goto confused; - if (first_unmapped == blocks_per_page) + if (first_unmapped == blocks_per_folio) first_unmapped = page_block; continue; } - if (first_unmapped != blocks_per_page) + if (first_unmapped != blocks_per_folio) goto confused; /* hole -> non-hole */ if (!buffer_dirty(bh) || !buffer_uptodate(bh)) @@ -536,7 +536,7 @@ static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc, goto page_is_mapped; last_block = (i_size - 1) >> blkbits; map_bh.b_folio = folio; - for (page_block = 0; page_block < blocks_per_page; ) { + for (page_block = 0; page_block < blocks_per_folio; ) { map_bh.b_state = 0; map_bh.b_size = 1 << blkbits; @@ -618,14 +618,14 @@ static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc, BUG_ON(folio_test_writeback(folio)); folio_start_writeback(folio); folio_unlock(folio); - if (boundary || (first_unmapped != blocks_per_page)) { + if (boundary || (first_unmapped != blocks_per_folio)) { bio = mpage_bio_submit_write(bio); if (boundary_block) { write_boundary_block(boundary_bdev, boundary_block, 1 << blkbits); } } else { - mpd->last_block_in_bio = first_block + blocks_per_page - 1; + mpd->last_block_in_bio = first_block + blocks_per_folio - 1; } goto out; From patchwork Tue Feb 4 23:12:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960171 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 8B478C02193 for ; Tue, 4 Feb 2025 23:12:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E41AC28000D; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E12B280012; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6AD8828000C; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 2B2D228000D for ; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C69C41A02DD for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) X-FDA: 83083812756.02.DFA0620 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf22.hostedemail.com (Postfix) with ESMTP id 2C2F6C0002 for ; Tue, 4 Feb 2025 23:12:17 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=KQXrbBpY; spf=none (imf22.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710737; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gIJE1yXpif2CCfNIqrsdZ1ScxfCjjJhcAk10zquVIzE=; b=1iWfeZ7/XzVwf1oHAotGLG2uUNGCZ6ziiK1sY1UnFj1loOTw81o4+epayQ2r0ecrTuK2Zl h4DyThWc2QbeATGlpe36ZAeHAVA+JFsnH3X26wQ8HxOvYXzWYgfqY39+lb4KQ10fFvaYFh d5zqDNQ/38SO1GcEqVLJFLqkKmIP+o0= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=KQXrbBpY; spf=none (imf22.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710737; a=rsa-sha256; cv=none; b=zwK9bEaAxpvi/xN/MsH0lbTTgS/0Rq9uoTq5cD9aua5+NBksww2CW2b21pg6lux3cirrAz HKWLJJ2HlXNOFIq3yQkUw2IX9UYvNeGEp2ord4xbgIEW06rXbWFdNcIzJt4yNLGUKxVW/q ZUkqtEYfT2jcKJMAsBKfKwyiY1kqjSI= 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=gIJE1yXpif2CCfNIqrsdZ1ScxfCjjJhcAk10zquVIzE=; b=KQXrbBpYImm6WQgyMBh8uZWBFd 8fhOrvLjp0Y/9fv2pHE6+OciYfileSX4qGXBfSqqNu9NuyuYUkiJofTC4mo/bfK0FpAbSt6pdDTKx e3LX6yUYJrHxU5f+VyUaDtY8raa3hM28p6lQaeocODVMM1sVq4eLRSY2ePqRtbR3cjBM79DMzRDtf TIy7gt97JTaLPvTuNE6PocSik5aH8Vu9kzVyVX86STWSLRWJtL2OlOsgBQTvjR4PpS210bT8QSeoA +Vt5POzfHSI8ksLlgyPmqy283VLaWdT45QWNdGiDEEyLEehOpBPhZEzsPXJnJ7RmgrjQYwc8UZaMj y4Uc0O/g==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhU-1fWW; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 5/8] fs/buffer fs/mpage: remove large folio restriction Date: Tue, 4 Feb 2025 15:12:06 -0800 Message-ID: <20250204231209.429356-6-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspamd-Queue-Id: 2C2F6C0002 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: zabt613g6c7cptkhswqkjynm1qoqay7o X-Rspam: Yes X-HE-Tag: 1738710737-180494 X-HE-Meta: U2FsdGVkX18B6LL86Siw/R22f7OvranNrs6Od2zZ150jE+HfCFOejjih+SuEgpxw/K4RskAacJ34zfjRgDMnEUxkDT2LfGiaEuFogHfEE+Jjo+In63dKDAnC6Mm+im3FNlbWqpN3f+Hy/Z5FpG4M0hOx5RkvgAkc8Yg6ULLqAFTLOubDhtSPjLtO7vvvBPkdxTR15ZIbhmuXJWPZEogRKbNQbjPQL5FAtJpm5BvK3fJgVfYh0puM2srNoZppUZz/9UBaj5MV3LoiUVoZYWGAjEj/IImD4sdIzd5K9w/Gdy0SI3nwtwjYU+Nq7bcF8Vu0pCVr9lsQh7zGVKxhRK4qkycE0yhzeJxlM8O1t/uK1FJiEQDcX8b9gUZrcgJtR2bdM1xC3tlVB8JJwZUaGU8WUak2qV+tJ08y+A95ENOqa/EyuSzuAPTdIzQczw+G7uP5PfjliSH0o7wuteMZzlYBqnkTSsW6bXYwhMuXqXxmcN+Itb9TAg53MZ9MCyxEqbGoNBSLfuZS6M++GlWPUBLdRLj/U5N/P4QE/icVvZKjguv2KsPg3LUp3+ECeQx6LhWetmp6Zv89T4nR8iRlEwZY+9DEBs7gEE+iWjdjOGqvMoD7ZbbCNNdIo1IoCQsgThmSWLus/qUvTJjL2vksTUczRTT7PdUMkQmYiM8u/f7fSGtlJ4S6QvKoXls1WR8ztPBEFKDGultZZ37HFeuJdZXWysAAcK6RjAxyVgDzAL0jXgw1Dm9lLhMeunXXrWit4EHZB0CXLYrwXIojFmtnm3VjdPJZs1QbY7r2T1mqXGRp6+x6u2yxBJD/NUE8ndE/L8Kgjxh59BIRHhrmI9Pdi5pzEmDuDJ46DZLfUMX/8vaaVB5rkGV6sD0G+FTVvlGO781gBl8XIa2387NUbiByGWFcQnUX0RKMNqvi0dvH8id3FhBkb6QdcLx5+aAve4FWPopoPIBSeLIc+M7TKKN+gpW 0+YECGlM R5mMq2U/ifV8WQlrhFkVBGum5bGAney9FrEQTYO1K/VxQDENUQs3P+ph5ijVboTM78y6x4qMO3CIIQKP5hgLSYELas2FmmSa3cpijOtqdrUVDarBv6m1oBJn1v6lSq0sJjwwwdbpC+EDAUd91SfG6LUm3QSZiBouH2kQBznGnicYQH+/6ZyzdpBQGFcmciY4fQza1ge5x8+lc76knP2gKrXNdgcxirj3ff7/6nnWlaQZkQiINRNCHmZRFVkJ7PqxGkz2vrUHX64EzfUF8+AIZrDKr0750SYmyfT2OCmlNULR3Kj79BqUajdiT7MApJ/lbtSo8x/tR/CfXl+ZmwQkdcRmKF0SkzYYTpKUSAWVJ8aNFLfNrLWNS44CmWUwRoZtF3yD4Qg4sqcnFh20Z0vuPRlP6/NkQX1V6ahdq4GSjjVgmQ68HDPIWtQO1zZlK77DlkCLTZKjfxH/5eu4Rl4fbf/rUbiXqE1uVVTyQ7qr9RX9vjkO1FC/4Ji65Xg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000332, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Now that buffer-heads has been converted over to support large folios we can remove the built-in VM_BUG_ON_FOLIO() checks which prevents their use. Signed-off-by: Luis Chamberlain --- fs/buffer.c | 2 -- fs/mpage.c | 3 --- 2 files changed, 5 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 167fa3e33566..194eacbefc95 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2371,8 +2371,6 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block) if (IS_ENABLED(CONFIG_FS_VERITY) && IS_VERITY(inode)) limit = inode->i_sb->s_maxbytes; - VM_BUG_ON_FOLIO(folio_test_large(folio), folio); - head = folio_create_buffers(folio, inode, 0); blocksize = head->b_size; diff --git a/fs/mpage.c b/fs/mpage.c index c17d7a724e4b..031230531a2a 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -170,9 +170,6 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args) unsigned relative_block; gfp_t gfp = mapping_gfp_constraint(folio->mapping, GFP_KERNEL); - /* MAX_BUF_PER_PAGE, for example */ - VM_BUG_ON_FOLIO(folio_test_large(folio), folio); - if (args->is_readahead) { opf |= REQ_RAHEAD; gfp |= __GFP_NORETRY | __GFP_NOWARN; From patchwork Tue Feb 4 23:12:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960168 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 11A4AC02193 for ; Tue, 4 Feb 2025 23:12:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 52924280001; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F210280012; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0BD1728000C; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id CED7F280001 for ; Tue, 4 Feb 2025 18:12:18 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 608CF1A02B2 for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) X-FDA: 83083812756.14.6880F91 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf04.hostedemail.com (Postfix) with ESMTP id 46D4140008 for ; Tue, 4 Feb 2025 23:12:16 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=Y7kbPbrZ; spf=none (imf04.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710736; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BqAmEHN/NB4fRpClNavDgsxh4n8ElEwRbJC+1e1GTe8=; b=PQWQyxypS19FujA8mAqC4gPNDFtqBjQih03GIe7YPYGXZzpFynPY5aXRMSE2mM7ep3O1MI VKZoZcsY1tfNNQJq0LlPGoUvM6y/jx07JyjykF7IRF7ybrf2Mmfe00EjD5RfPt6Zr14vDb CF++RNuTorDfnC/XLJDzEB/VVbXgIw4= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=Y7kbPbrZ; spf=none (imf04.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710736; a=rsa-sha256; cv=none; b=J30mmtWx8Vh1rWCTVuD5qulpkTKXOywfT8BcjuX1wmYhz6ntyN6308GqfP/UikCmoYVtaT 8s8xw18pextu8JjOjxNIfsaMlJluVROWMRq/tIIdPtk7NII4DPave0Y6OJAgYBK0R5905Y wULL7GBEr3jw7KsP6eyoMo5E41hkc3M= 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=BqAmEHN/NB4fRpClNavDgsxh4n8ElEwRbJC+1e1GTe8=; b=Y7kbPbrZWUV0UxwwKcM89Dh4Cv 4dxa4VsxyQWeZvEu4hKO19mk9Oahn1gL/beoB8rGrrXjF6u0/dChAjDktCPfvzCpmcH4tRI8pz9MG A3Y2ewRHNTTYqRWySxth22/RQPFoYLru4nRX05nafsuR7gb19uX8vZLDt0wZsslpTJi7N/SKPgiyL Os4lK9jtkE6l8Ai4GI0oZfoXiZPFY4MbnfNhlsT1hHbSp0reE/ZrsEY3yWe85OVnH9RX0IhEg9wVW bVkvsCsUGGXielAB07u++sxl65h/dSO9scBeUGQQn1NgEqw4rgbP0GvNTnctfEc9KpiGA85cCl8ll ymPxZ9Yg==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhW-1oc0; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 6/8] block/bdev: enable large folio support for large logical block sizes Date: Tue, 4 Feb 2025 15:12:07 -0800 Message-ID: <20250204231209.429356-7-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 46D4140008 X-Rspamd-Server: rspam05 X-Stat-Signature: phn8hjj7yonc1stxgoh8fpkj76xztx4z X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspam: Yes X-HE-Tag: 1738710736-555569 X-HE-Meta: U2FsdGVkX18dsDL7vNRqAkM5DhS7pZlWPfi2MzuxdTravDEx/2PES3m7M9P/yKP7pLDx23CN4hTNtiDmU/LPrPp5eYOzP/2FdqC0tTJPVm3ULaPgyXjOR/TR4fJ43/ZNbtz8lQrpKDTuQP+bkLMlwWrK9l1SsBH3sEu7ZJEP1sXgzvf5ZuIABm18VTwMdSLtXnuVJ0qi64KLq3U7cwcfNU3dhheAu1mocVrN0U6FMd1J53SQbIjKgRb6B9UBJXAee2LRA5zv4RzaCulirRYbv4GhNphdhUGCdOXZHF5+aEnp3Ulr8ToHhDSLZuzy4BNlTlYux+dWI/aDs3UHidsc1pPTTbQm4Ulq9ad7POyyAMv3QPVm8VBCrAT2MqHm2pPFRa+BHYH0RgB4yILk046FSrxsHzLyRtoiIyW20dRenBMOTblrdOUIGLh4hv+DmsyWzARvzfWyi9W9Fqj+01QhS4Vz9FBKU3o4pX7CH6Ad2C6wPCkeuIWvWqVFIKwFw9xS42PYA0dX13LFXiT9N1NxG+FWw/JSs10ZFBbOZcAD6M3h+zB1zPaBnRIojfOtq40GUFrxZciuvmkFhXV0nLRoUbV6SIlWQjCz7cBGRIsJ2XJ9HIAVOswuKZqLHvZJvF+otcZsd4DblR5CAyBSmAHl43ns3C23UBww0RzvMvYX/QytbVFcs2FYL3owrWg1KSGjdiQ+KTtkcrStVtkiNVfksSpYetjFMHMH9mVKIqPAIrQm16T+Zepzh99enKG44jo0L4UQD12IUe6PvURIVkPeujpiFuUcxLwLa9X4zOiBbUzWaamvjkpd8nx/IeOj6n5K+iGqOMQu6y31pFC1m3eSnKG6w+sopkNKkkvVnsJLHBKC9gd7mLN8o8j8p47l6ek+c0qmd37qNvO2OJYc2TtXmhB0Oxzf+91lUvciRKq8XJJnBlwKS50K+QAlygGp1BqWJA9UEjHi+LWXVF0z14c +x7x/rWO u8nZSH60S83M3MdSp6rKZJpCzW5LpTMt52uwXzGZuZfFG9LQ5htJ8iP3U418C/HEVZWJ3w9WagUd43dXKhLHcO+BDkk5fQN6uwwCW7ue7IBlWaUIydPFq4/pe8m811gLHCAhjId0Oyf0RuaRQ6+bRYitcsdYTjDHjxowvPcESZFDwueowKgBuL9FzTBNsbnTOQupiAVvHXAxJl5T30ArLMTU+3TXJFhcuWgnx8hN7/TEx0ahSH1azmMiYO8Q6zyy1zb94HNY0otHbnhgsljD/yNxXG8v53A86gYGzApbqRGDZRWoW6q6ZGq8jMOTg1U2KOE7YaIT8uf/Kf5PswiYa0i24LSsx4dXUr8hKqcOFSf4Ar2596hXBybf32ZzVN6JIPptUA6A5jC6Mwp1m0KcMDVrYeLgS0UJLtU5pu9fPM+qAfe/Y3Vp9VMaHBSEg1iKN9YXeiA/MutSuZhu19giAsfEGEYjyeLkzLCay X-Bogosity: Ham, tests=bogofilter, spamicity=0.011619, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Hannes Reinecke Call mapping_set_folio_min_order() when modifying the logical block size to ensure folios are allocated with the correct size. Signed-off-by: Hannes Reinecke --- block/bdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/block/bdev.c b/block/bdev.c index 9d73a8fbf7f9..8aadf1f23cb4 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -148,6 +148,8 @@ static void set_init_blocksize(struct block_device *bdev) bsize <<= 1; } BD_INODE(bdev)->i_blkbits = blksize_bits(bsize); + mapping_set_folio_min_order(BD_INODE(bdev)->i_mapping, + get_order(bsize)); } int set_blocksize(struct file *file, int size) @@ -169,6 +171,7 @@ int set_blocksize(struct file *file, int size) if (inode->i_blkbits != blksize_bits(size)) { sync_blockdev(bdev); inode->i_blkbits = blksize_bits(size); + mapping_set_folio_min_order(inode->i_mapping, get_order(size)); kill_bdev(bdev); } return 0; From patchwork Tue Feb 4 23:12:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960172 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 966B0C02193 for ; Tue, 4 Feb 2025 23:12:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 16B48280012; Tue, 4 Feb 2025 18:12:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B6E6228000C; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 86379280010; Tue, 4 Feb 2025 18:12:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 1583D28000F for ; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id AA746C041B for ; Tue, 4 Feb 2025 23:12:18 +0000 (UTC) X-FDA: 83083812756.18.BEB5F43 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf05.hostedemail.com (Postfix) with ESMTP id DF99C100008 for ; Tue, 4 Feb 2025 23:12:15 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=btPrmYVU; spf=none (imf05.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710736; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=uOeLYsw9Sv9eePIry8YkgaAM0u7ucnWKFkLyfp328sM=; b=l6CUYCTDyO4sLCmuDw2B6Nyep06HzW8ro6gpZnZ2NUzisdKUh+UZY1snzprHg//12tZWoZ CJmvB2nBHt6OhR6v7NWuSYsk2U3gf7k7MF+/qu0oMYjyrqF5Kz7X8iAr8qowpvgDUT9THK m/j7da5SE/7TOAwe2DQmZu/fK1umqqE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710736; a=rsa-sha256; cv=none; b=FhxM/vdYiG46Nt7nja4AzQn4aanYkPLQI1xWgcXyALn40Z+yI1TnSFFsuLq8/WE+1TrDEo kT9QwdeeYxD8+zQNrqYd8MJrseFdL0Bcs/xktybm4LyseyjS9q793+ydoEsSK73gnSm5Ry Ppli77YublJ+RnVHDgAvVzROb9DmClc= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=btPrmYVU; spf=none (imf05.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) 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=uOeLYsw9Sv9eePIry8YkgaAM0u7ucnWKFkLyfp328sM=; b=btPrmYVUIxv/PUPNXWIIMwBM6P xdr5bCfUDfEXVLeDiWlkcc9wcAAlPLtZcKGPl/KPku29F6Heroqfk02KMNylpMuKL7Plx2J0Is6pN r29mKYQRjTW2qgleR4u8VtGuYVSGPqq9kZpsczBByM/09yCXiLysvwsVPSRQAsqDj+akDHjW4yyY6 lQx6hToYIMU3ptGlugC+owrMVO0Vzv/+2A5D0t9Y0gB4ZVnyMiVlPkCKl27D9rZR1EGoeRcC8nHKO hGbQrFB6d9WIpejPUoWvCwLG9N3tbA/1BoMoDt4Mt/VctQGHM6yhkDu+8qidTpDefS6Em56DHpcCr bHlfs/cQ==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nhY-1xER; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 7/8] block/bdev: lift block size restrictions to 64k Date: Tue, 4 Feb 2025 15:12:08 -0800 Message-ID: <20250204231209.429356-8-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Stat-Signature: cudftxkrsh6u5yti1ngd5t33esz7mn7b X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspamd-Queue-Id: DF99C100008 X-Rspamd-Server: rspam03 X-Rspam: Yes X-HE-Tag: 1738710735-776736 X-HE-Meta: U2FsdGVkX18UbDqAFvgiWIt+qzuL8u4Z6/V3JCAhEwcyjZ3DsDdWB5/1fKRHrbUIG5pyK9vQEY/NuU8BEvi/beCiiOisqi/ihwUESa2By9TAjMgO3I/Ick7UrqeQ08GzcFxILkWjiPozP9xIeNIUfsKmFCvIeflgoUKkjzSBNSu19c1D4lZbkEC1vOI/VYuyFOzVmpfohsbb3I30XEuMi8kJpZbuA+rgy8RrneFOTkIF6cYdXN6ttRXFQU9mY7rtvU1b4ZhywPW2WHeNtlxadOIu7W8O8bjPuPgm11zpcp223A+SxOn0SZAmHTyAe9XpTp59Tbof1I31nQ9v+9U49Ed+b+lHJDqcxjWDfDaT7ykfim2z6UEAHImWrxn4wet2jyhp/+dj4QrAwI0QmrazqAIlIatO7vPIfMpIRaDNQy7GQjaCo0uv1n3ciVcp5dHQGF/67Q+4nZpwZI1YtLNAtCOLImwVNtZmYVQf9MjbzIkWu9StalgqEFo7GweFj7Z2yTWgzVd2H6+n4NJpWn6Pd2lfgSb+GDsOpUmX1PfVqYvp0/Fwz5KGYGIcROy7S/wdA++Q2gIoK9JJiCxGFYdrGTU+henxpyQtTcCJ5Gh4zq33vJMhC3fNg8YUz7rY8UZtBkuaA0NHxv/UyXT48owP4He0n2txL7fpDKORI+trO4txKOkV71eW8/3YM9CxsGMFtQcUwT07yHyfIDXTffnzKxt2PSjM9Tl0NNGJXA9jU0nxebOuvPDxcPMWzaTOquBoA9fATgQ5WAJKbo1Ma60bWJvxkSsX39DzfDtOH+FI0SZbu3xZk2Zo2IM9hhUz7dlS1nepKAG3bleA+QkpxKqs7NOxmcpobm3BTSPQ47IFyZuWvaNVhlrM4caIw8vuRGLfOw9EtwboODyuPwN9EouQdxS+5Xq8FbcaqDE2fAdK1z7ff8XhNJ3l1ZcCHrSGJEoY5pCJgTU8NPWizuKZkKG zYu3vUBH v8Wh7oR4oyob2xI37IlKCApw8/BUC8iQa2xihlue07bpKoh9pePRy9g1Xj7QuenCZuvUyd2Oows430GWOvRrESWd8f3cGfHwf6yuIGABHhejUJtWWgosRM8qpb/GvkubTstgoNgpkSL38mQig7VQaGGB7Pu25p3Xu/zmPH623JwIA4nFlTIuB/uHOIbuVIPcXK1pscZESXG/pr5ICmFLc8ltQ+6qU/FNYa/VewbCPvI6rW0l6U4bbtLnz8WHZEt++KAb0d/PdzyDliys09XJS82k1oLOz0HOl1zxLr94fCPlHkIlidW/BaUh0bCD21wywxqeay5L7OqIzZU+x775Eq1C+rjSRb08lhwzxww1vAu2hCYIXV05ezY2MJHCZ4I87hmpVhs6z4eBF3qjHIT6Ea7aPAJizpIEBYHDXMMNpq3/9zGwBztC2SQVc/C2sCeF//tcyBRN+GwKGznpcEH2zGvwT5MprYuaByHTaX9z7X/wv1RL2B3yLeSHLLQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000008, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: We now can support blocksizes larger than PAGE_SIZE, so in theory we should be able to lift the restriction up to the max supported page cache order. However bound ourselves to what we can currently validate and test. Through blktests and fstest we can validate up to 64k today. Reviewed-by: Hannes Reinecke Signed-off-by: Luis Chamberlain --- block/bdev.c | 3 +-- include/linux/blkdev.h | 9 ++++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/block/bdev.c b/block/bdev.c index 8aadf1f23cb4..22806ce11e1d 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -183,8 +183,7 @@ int sb_set_blocksize(struct super_block *sb, int size) { if (set_blocksize(sb->s_bdev_file, size)) return 0; - /* If we get here, we know size is power of two - * and it's value is between 512 and PAGE_SIZE */ + /* If we get here, we know size is validated */ sb->s_blocksize = size; sb->s_blocksize_bits = blksize_bits(size); return sb->s_blocksize; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 248416ecd01c..a89513302977 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -26,6 +26,7 @@ #include #include #include +#include struct module; struct request_queue; @@ -267,10 +268,16 @@ static inline dev_t disk_devt(struct gendisk *disk) return MKDEV(disk->major, disk->first_minor); } +/* + * We should strive for 1 << (PAGE_SHIFT + MAX_PAGECACHE_ORDER) + * however we constrain this to what we can validate and test. + */ +#define BLK_MAX_BLOCK_SIZE SZ_64K + /* blk_validate_limits() validates bsize, so drivers don't usually need to */ static inline int blk_validate_block_size(unsigned long bsize) { - if (bsize < 512 || bsize > PAGE_SIZE || !is_power_of_2(bsize)) + if (bsize < 512 || bsize > BLK_MAX_BLOCK_SIZE || !is_power_of_2(bsize)) return -EINVAL; return 0; From patchwork Tue Feb 4 23:12:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13960173 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 698ADC02193 for ; Tue, 4 Feb 2025 23:12:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 52AEE280013; Tue, 4 Feb 2025 18:12:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 499B7280010; Tue, 4 Feb 2025 18:12:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27407280013; Tue, 4 Feb 2025 18:12:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id F37CA280010 for ; Tue, 4 Feb 2025 18:12:19 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id A8F411604B5 for ; Tue, 4 Feb 2025 23:12:19 +0000 (UTC) X-FDA: 83083812798.17.CEB9F8B Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf08.hostedemail.com (Postfix) with ESMTP id EE4AB160007 for ; Tue, 4 Feb 2025 23:12:17 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=0nzOxxML; spf=none (imf08.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738710738; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vsI3NrYDCkaTTiln7YWklNd5/+H3Tzw74X2k8TbvG94=; b=fS64BERRgWI0ciAz6zXIBdkZtqoykv/gOJ1Sohz8Ge4mUTEiF7q5NdH7ULJ2l+tv883TM6 leHXIMGOmIqLcFD5Hwahyl3oDiWunxnWtfxwXmhfOa9DKd5pVzQHFGSwWjoNcHcemopk6c ipEPyOM58jfLpk1PGhyEZ9y9pKSi8PI= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=0nzOxxML; spf=none (imf08.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738710738; a=rsa-sha256; cv=none; b=6RcrSk5YoyHIcbvA05/8rSUuk15Ybr5mbIE3HQq76jDxwtYeEXqPUmai+4jFwPSOd1Ddhr hIsBZTxkuZrSl2wBiyV0NGgtxo5abRHw4kDeMg3Ek66KWc59Nn7L7eiacNOUIb617znu7r wcD3w2MGyNb/hPOR3sNsyxNFVnGe02s= 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=vsI3NrYDCkaTTiln7YWklNd5/+H3Tzw74X2k8TbvG94=; b=0nzOxxMLwU+TflgBQMEtdhAsm8 +xmsBu/qY0JwCI1dXIoV5MXYXGahDwQF1Ibbnvkoarthv7xByRdwPYPpQ/searzACLLZUcBGbwb/f hsWuhQ1VpcW+/la2tFAWJkaS4gmr4MAUuS+SdmOEHQkdAErpyyqnSP6+j1uLcQhyu+w7AJGOwPZH/ 5zwlFRBnUrjElWvfumBsjkqRVi3pBEMglKpJgQcR6fRgwwIzyz+3bubKGK8cPLv01+aHwHmYpzTSK yr+uAl+OC6m/bYnoo6CNNI0vb3mMHP96V+hxotakRfuquvEe2QcVD+tT4Xnj8F+kvdZGCm75aRJOF YAgjVBWw==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tfS5T-00000001nha-261m; Tue, 04 Feb 2025 23:12:11 +0000 From: Luis Chamberlain To: hare@suse.de, willy@infradead.org, dave@stgolabs.net, david@fromorbit.com, djwong@kernel.org, kbusch@kernel.org Cc: john.g.garry@oracle.com, hch@lst.de, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v2 8/8] bdev: use bdev_io_min() for statx block size Date: Tue, 4 Feb 2025 15:12:09 -0800 Message-ID: <20250204231209.429356-9-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250204231209.429356-1-mcgrof@kernel.org> References: <20250204231209.429356-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: EE4AB160007 X-Stat-Signature: 66zf7r4u983ey68dn85bb48twedccu1e X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1738710737-656956 X-HE-Meta: U2FsdGVkX19RZaeCrqbjWVZHMTCdNoDq+OiCQFGF5qtVDMhYt4H9qY8IwkJhKfPZZ30AcD9wZH24SxNoAQiJ0esQbPrKLC/s/vPzJOjJgmaeXPpj86venmnQEjGFSCdXOYS4ScBmOstvnPsviCRN1pXFxkmd9brtIJFanf/IGdARK5DFg6qtrvdfA1vCEoUWbppQN0cyas+CMIkM3VC1kNehRgTSiuceCwGNZqYShNUd4K7e7BE8kDkaIc73ycTs5ReJgL3g38V+gb0pXbJnu33D7Q31mJkRfpESyO2exRg1177x2QokgtBE9dQEqmLY8tBuF7s1qTqix5QxoOPefN9bvnbdy19pDRrHx769FIAIIiW5WqEKovINLzXUT3b/Q9qXLHrn2k0OjpaJg6yBZrXGax5Mz9HRHIDt8ntHNxNvsQJy/C3XEHUso4AxkMj2X3eKgERb+xBrdNSX7CdEFytD6mM+p7ENA228bei0QNXiClz4jWye96XFXB+sHZP7L5igei5TFjVPgbrMOtAysMmkmitd1ZRX/Hn17ci6J2CvL0NhPwUWlMrPC9h474N7htlbkykzRiwPzwgdohkrtv/4qyFrRIKzu/LiqCnd+IHtu5j5ZWFbxZENq7jU8nmJdpmyoGjeKsuk3wHHWOarmofF0GCSM0Neo1tQMbRqgpPvci+IM7I+Xu9pN+Op/3ykc/cPgv9MyxgkqPTSXMrq0xElJIW3OKmtVDR/tuuU3vewWqwCY25dToPDRs4fNrVbH9M30DnrPtSazr1Qd56Xr2QtncIjpHqGrLQiuLdPxF2bmGgXCOMLKtDFuDPwP5MQ9yvgSf+fv06M+W6Z8iNFdDzjbznOsjCYcjDVgGi2h7sbPL7Fe1sdTvzadRoCVQsLIK+1c4xq3206hOfz6seQZbONd6Cxv8Sb2zQj15ffQTVxwVoGeNGRkvbdZUPN2f/h5G4AomI8/FO0709rEY7 9a7xdJR4 8nepvgmUW06SWE8pjFqbUDTQAT+9yX9Hx2eWLpVXhfZY2hm0XR8y3jFNbv1rPj9GgFqLIPXfkBKLziCH3wP/L1ATCUerfQK5lKYT8wVhdoM5p/yVFTleCuX0+NVKeklhBVOJYeBzfYz/NxqWpP20d9e0JL3rDm3CsFKD7Yxhg+ymJH6L9eMHfsNsxjqe39a2uLee6xVPE0Isus7u2GvH02dcHhKlAW0AdaBm5rMIsIPpjnfLCcWN+hih+geOkv2zpRjDwM9mFp6a9KVdoosxA4ZnU0rOrYmwvCqrgRKrxobO4Pnh/DfkwEdJe5TIK0bqlC5BatTYErivW2y3pu8R0P1WLGA06ghjaqHPJbPpdVZOfNuaku0bMEPyMMg/i+yTYeDfG0Li12dmxdwz46EG7GdER4bq0eAOV5/oajahJ8NsBvxe4B80D0Bb9T1Q4/60vt4Z+VK/pD7AnBT9GKftecdmBQ7CNDX4f4+SSaR18/C0/+eeTLSg+iMU9S/5IjMKCTeVXlVYqu6xalJwpXbq9QHNJ7ICr/TUDZrGl85MVptugpfw= X-Bogosity: Ham, tests=bogofilter, spamicity=0.004033, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: You can use lsblk to query for a block device block device block size: lsblk -o MIN-IO /dev/nvme0n1 MIN-IO 4096 The min-io is the minimum IO the block device prefers for optimal performance. In turn we map this to the block device block size. The current block size exposed even for block devices with an LBA format of 16k is 4k. Likewise devices which support 4k LBA format but have a larger Indirection Unit of 16k have an exposed block size of 4k. This incurs read-modify-writes on direct IO against devices with a min-io larger than the page size. To fix this, use the block device min io, which is the minimal optimal IO the device prefers. With this we now get: lsblk -o MIN-IO /dev/nvme0n1 MIN-IO 16384 And so userspace gets the appropriate information it needs for optimal performance. This is verified with blkalgn against mkfs against a device with LBA format of 4k but an NPWG of 16k (min io size) mkfs.xfs -f -b size=16k /dev/nvme3n1 blkalgn -d nvme3n1 --ops Write Block size : count distribution 0 -> 1 : 0 | | 2 -> 3 : 0 | | 4 -> 7 : 0 | | 8 -> 15 : 0 | | 16 -> 31 : 0 | | 32 -> 63 : 0 | | 64 -> 127 : 0 | | 128 -> 255 : 0 | | 256 -> 511 : 0 | | 512 -> 1023 : 0 | | 1024 -> 2047 : 0 | | 2048 -> 4095 : 0 | | 4096 -> 8191 : 0 | | 8192 -> 16383 : 0 | | 16384 -> 32767 : 66 |****************************************| 32768 -> 65535 : 0 | | 65536 -> 131071 : 0 | | 131072 -> 262143 : 2 |* | Block size: 14 - 66 Block size: 17 - 2 Algn size : count distribution 0 -> 1 : 0 | | 2 -> 3 : 0 | | 4 -> 7 : 0 | | 8 -> 15 : 0 | | 16 -> 31 : 0 | | 32 -> 63 : 0 | | 64 -> 127 : 0 | | 128 -> 255 : 0 | | 256 -> 511 : 0 | | 512 -> 1023 : 0 | | 1024 -> 2047 : 0 | | 2048 -> 4095 : 0 | | 4096 -> 8191 : 0 | | 8192 -> 16383 : 0 | | 16384 -> 32767 : 66 |****************************************| 32768 -> 65535 : 0 | | 65536 -> 131071 : 0 | | 131072 -> 262143 : 2 |* | Algn size: 14 - 66 Algn size: 17 - 2 Signed-off-by: Luis Chamberlain --- block/bdev.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/block/bdev.c b/block/bdev.c index 22806ce11e1d..3bd948e6438d 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -1276,9 +1276,6 @@ void bdev_statx(struct path *path, struct kstat *stat, struct inode *backing_inode; struct block_device *bdev; - if (!(request_mask & (STATX_DIOALIGN | STATX_WRITE_ATOMIC))) - return; - backing_inode = d_backing_inode(path->dentry); /* @@ -1305,6 +1302,8 @@ void bdev_statx(struct path *path, struct kstat *stat, queue_atomic_write_unit_max_bytes(bd_queue)); } + stat->blksize = bdev_io_min(bdev); + blkdev_put_no_open(bdev); }