From patchwork Thu Aug 22 13:50:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pankaj Raghav (Samsung)" X-Patchwork-Id: 13773521 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 C31C8C52D7C for ; Thu, 22 Aug 2024 13:50:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 44F0D6B01FA; Thu, 22 Aug 2024 09:50:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 389126B024A; Thu, 22 Aug 2024 09:50:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 202576B024B; Thu, 22 Aug 2024 09:50:39 -0400 (EDT) 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 F36596B01FA for ; Thu, 22 Aug 2024 09:50:38 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id A179341709 for ; Thu, 22 Aug 2024 13:50:38 +0000 (UTC) X-FDA: 82480016556.29.D600B8E Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [80.241.56.171]) by imf09.hostedemail.com (Postfix) with ESMTP id A174114003E for ; Thu, 22 Aug 2024 13:50:36 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=Csyw9loc; spf=pass (imf09.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.171 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724334573; 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:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=7pRMKX2rOPE9Dpzaf39cm+nvGAfhyyeS/+UDEWMvToI=; b=C7Qt7ndPqErAXFssXFZUztEff1XTb5QVKbzO4TtIyQyDKvC/KRq4s/Jm7wz0v0Nc6iEPzI v4ft+EHZcomBYHWGOkk4GfWrjW3DLM02k+7ztnAPckXb06u+XgoRBwSDyVynUoPObc5LWp PfLeAmdYNmLGhIplq4sCIcDRb4cz+ZU= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=Csyw9loc; spf=pass (imf09.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.171 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724334573; a=rsa-sha256; cv=none; b=cLug20nJaNR230HQNO86EIHSERqrC5Ads6agWV7+tP47PgiPNGKbcwb1XTNxFHoedHuMHK ii86FtkrUNlY1kiDnEkyDgC0EYi2PFLEjjdAh9tE9pvrADRXb7DK6A41RXzltnNITZvKeR Ae8bnI/9hCq1UMW15zPZZRFTFsm9Eeg= Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:b231:465::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4WqPjM3plkz9sZS; Thu, 22 Aug 2024 15:50:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1724334631; h=from:from: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:content-transfer-encoding; bh=7pRMKX2rOPE9Dpzaf39cm+nvGAfhyyeS/+UDEWMvToI=; b=Csyw9locQT7xz4yaIBnXECXhUPSNMWknIij06oRMHOESEGG5Dh5nFug0EI3DHMUcij2SWK pmM91iH0Z38wJR/gYdmTPX6KC8FxHPNmh4AkzwRbe9jqCtzygsaA0iFOKoeueQ1r1hxt/2 TTBLM6d0NjSjAyRyynp1xniDeVMMrLgz/k5SCFqsocaEBIcfkD7iqVA7v6j2bljwF0TWNf BfTaxBZEQo0k76TJAv8qJ4oyYCqBMt6jfzabcSOOKl1Al5h5LSDAMPjHBLUliRiKcU04TM ZQLRTaNl0ryfhhVZprYrfmZS3Hsxd1MLBuWEWhTsgBxwmlGrwqEdtWfSXGpdag== From: "Pankaj Raghav (Samsung)" To: brauner@kernel.org, akpm@linux-foundation.org Cc: chandan.babu@oracle.com, linux-fsdevel@vger.kernel.org, djwong@kernel.org, hare@suse.de, gost.dev@samsung.com, linux-xfs@vger.kernel.org, kernel@pankajraghav.com, hch@lst.de, david@fromorbit.com, Zi Yan , yang@os.amperecomputing.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, willy@infradead.org, john.g.garry@oracle.com, cl@os.amperecomputing.com, p.raghav@samsung.com, mcgrof@kernel.org, ryan.roberts@arm.com Subject: [PATCH v13 00/10] enable bs > ps in XFS Date: Thu, 22 Aug 2024 15:50:08 +0200 Message-ID: <20240822135018.1931258-1-kernel@pankajraghav.com> MIME-Version: 1.0 X-Stat-Signature: ysjhwzcs5sohufokz67m15ymqa3yfmx9 X-Rspam-User: X-Rspamd-Queue-Id: A174114003E X-Rspamd-Server: rspam02 X-HE-Tag: 1724334636-762889 X-HE-Meta: U2FsdGVkX1/uwbuzlrKOBgbtoVl2BX5nACTnIw+F/8uhPtHxEUEVRtjisa6Y6+hJbPT4k1bHtPRmbckC74+CcDl+OUee2OnGYi1jzof0tETT6BOPJVz6L8K9/g0cWDQfUg/ktU9JliMHrtOqPd9XdimusHfEoMPbK0ZA+UGcciI5GJEn8NE7NbR1JFky7t4Fse0ycZ62aE1FjT06Gyd1J4sWA/Hj1PWr6TDEVXOIa+pbZZHanFvSeMs6mwOxUpQ0oZRBtYtnC6koxhIh7eWXEhoXgf4s2aIJrXvpDhcvblHVQnUhOAV9e5egDdtLo2PoTEkXLsMrvzjELv+p16kB91VSznRfPrV3aF/YSKWosn4HvOQEOTApqsc9jRDmgZovcJWn9zKxjikp0aZscm1fceDn33K+cbYWzDX/f8pboZv1vSwPzCbGg2/NVdGnSIK3KQhRRjSPBqFyEUBdkECwLQrZEul/l5XCsPiUgnuPNfkdGI6HzYvaw8mIWKOPs9ooOP22BYQZb0MpRilmjmogj1EZW9K8+0HSpIeu5k77jHZKQR8sRtvt2qkFmB2e0uGCHeMAt9eP5ZTj7PgETTutp9mKBjfuJlhYZos8fdGtRYcCaEDNONaY1F3aE9oAAAxvKEUyFozP2SfC9D+iO01+oD6fTkja0SCE+VkXy1h5hCK8k6TOtS4QAcjhGKGF19XFXJsUDyiMXOtwo2EBuywmrfU0B/+duA9AZgYIHT6YEhhS6WUbzZ37yPd0OahOtDejEePi+5TBttxggunsoD9A/r8tOw+GqjMzZqjrsWdB5jOaLGeN6Yg31mIUKeJ8e1oG8MIQ1agD1dY8YMhK6y2jQxR3iDTFaUEIjSxWxHYF7JIHvy28KYirog37wdRJHX1jYY6A4CJ4PhnmmxCQePp3akH3yhxG/9zZWbr9j8OWukxC0QZsSgevp5x+u3vdhGLKQf3NEZu4uqf3nLfLR5V OWrO8+Do 4yMXusLUEDqhq3gNr9Tzrk8Sfp13cd1Uzj+sT7khQWAeYQWAYNbDqPYh0in0lKYh7XPolKWENoMWJ6zQSip3l9js78LCj5Po2YS0U8JWPoWKBgwrJn3JbmA2v6CAiTAVfqXCq5awWsdZxbiGkM3qbxyjsVY0ldoxgaPLpLisRNGJtdWmlCR7SNAwgMBaTBKE3MTZtuiaoSpLrP2KdNGon2jC8e8C+KDRIMNxYe/766ax3WZCUmWutV5o0FRHOK3ccVtkpUcxKZbH6KOe68cEfcObY8JELq1Rq5dfTqvjnaIzSI+F6/B2yCJQoiHZWNAv+VdhqtYkHjEI1fZJVEhp9tFxkUeDgw4Ebo5cWRmo+J1xtBp9t1LwhtR05RkfCYHgP0zF1h2FWd1T7xwZsMflu5Hvx0Db1eYLZuj0GUL8maThJ3Bbf8pvNWY3UeWCi4V1ZHoEJKOAn5Ht4G/qvb0T3/Wbp85afi4+VdRiwLkwivnhguMzrwoZMPEWecmOO9LAJbNHZuL5vbjQTl5ZffMplifa5qeB3/6Qk4PcfWYT1hfMVw1VSCUvK3/IzxA== 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: Pankaj Raghav This is the 13th version of the series that enables block size > page size (Large Block Size) experimental support in XFS. Please consider this for the inclusion in 6.12. The context and motivation can be seen in cover letter of the RFC v1 [0]. We also recorded a talk about this effort at LPC [1], if someone would like more context on this effort. Thanks to David Howells, the page cache changes have also been tested on top of AFS[2] with mapping_min_order set. A lot of emphasis has been put on testing using kdevops, starting with an XFS baseline [3]. The testing has been split into regression and progression. Regression testing: In regression testing, we ran the whole test suite to check for regressions on existing profiles due to the page cache changes. I also ran split_huge_page_test selftest on XFS filesystem to check for huge page splits in min order chunks is done correctly. No regressions were found with these patches added on top. Progression testing: For progression testing, we tested for 8k, 16k, 32k and 64k block sizes. To compare it with existing support, an ARM VM with 64k base page system (without our patches) was used as a reference to check for actual failures due to LBS support in a 4k base page size system. No new failures were found with the LBS support. We've done some preliminary performance tests with fio on XFS on 4k block size against pmem and NVMe with buffered IO and Direct IO on vanilla Vs + these patches applied, and detected no regressions. We ran sysbench on postgres and mysql for several hours on LBS XFS without any issues. We also wrote an eBPF tool called blkalgn [5] to see if IO sent to the device is aligned and at least filesystem block size in length. For those who want this in a git tree we have this up on a kdevops large-block-minorder-for-next-v13 tag [6]. [0] https://lore.kernel.org/lkml/20230915183848.1018717-1-kernel@pankajraghav.com/ [1] https://www.youtube.com/watch?v=ar72r5Xf7x4 [2] https://lore.kernel.org/linux-mm/3792765.1724196264@warthog.procyon.org.uk/ [3] https://github.com/linux-kdevops/kdevops/blob/master/docs/xfs-bugs.md 489 non-critical issues and 55 critical issues. We've determined and reported that the 55 critical issues have all fall into 5 common XFS asserts or hung tasks and 2 memory management asserts. [4] https://github.com/linux-kdevops/fstests/tree/lbs-fixes [5] https://github.com/iovisor/bcc/pull/4813 [6] https://github.com/linux-kdevops/linux/ [7] https://lore.kernel.org/linux-kernel/Zl20pc-YlIWCSy6Z@casper.infradead.org/#t Changes since v12: - Fixed the issue of masking the wrong bits in PATCH 1. - Collected Tested-by from David Howells. Dave Chinner (1): xfs: use kvmalloc for xattr buffers Luis Chamberlain (1): mm: split a folio in minimum folio order chunks Matthew Wilcox (Oracle) (1): fs: Allow fine-grained control of folio sizes Pankaj Raghav (7): filemap: allocate mapping_min_order folios in the page cache readahead: allocate folios with mapping_min_order in readahead filemap: cap PTE range to be created to allowed zero fill in folio_map_range() iomap: fix iomap_dio_zero() for fs bs > system page size xfs: expose block size in stat xfs: make the calculation generic in xfs_sb_validate_fsb_count() xfs: enable block size larger than page size support fs/iomap/buffered-io.c | 4 +- fs/iomap/direct-io.c | 45 +++++++++++-- fs/xfs/libxfs/xfs_attr_leaf.c | 15 ++--- fs/xfs/libxfs/xfs_ialloc.c | 5 ++ fs/xfs/libxfs/xfs_shared.h | 3 + fs/xfs/xfs_icache.c | 6 +- fs/xfs/xfs_iops.c | 2 +- fs/xfs/xfs_mount.c | 8 ++- fs/xfs/xfs_super.c | 28 +++++--- include/linux/huge_mm.h | 14 ++-- include/linux/pagemap.h | 123 ++++++++++++++++++++++++++++++---- mm/filemap.c | 36 ++++++---- mm/huge_memory.c | 60 +++++++++++++++-- mm/readahead.c | 83 +++++++++++++++++------ 14 files changed, 347 insertions(+), 85 deletions(-) base-commit: eb8c5ca373cbb018a84eb4db25c863302c9b6314