From patchwork Mon Jul 15 09:44:47 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: 13733193 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 A490EC3DA59 for ; Mon, 15 Jul 2024 09:45:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 04A3E6B0088; Mon, 15 Jul 2024 05:45:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F3CA76B008A; Mon, 15 Jul 2024 05:45:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2C8B6B008C; Mon, 15 Jul 2024 05:45:18 -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 C67A46B0088 for ; Mon, 15 Jul 2024 05:45:18 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6905A161540 for ; Mon, 15 Jul 2024 09:45:18 +0000 (UTC) X-FDA: 82341503916.29.2F2DD2A Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152]) by imf14.hostedemail.com (Postfix) with ESMTP id BFEDD100012 for ; Mon, 15 Jul 2024 09:45:13 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=dLRvtHhe; spf=pass (imf14.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.152 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=1721036680; 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=pnDOdJKQ2qCiJS1B5N8ch6auI8mL5/MTLJL29eG+61g=; b=Zn2O/krLpbxcqzzSKMSFZhH8bbXNhNgAWMJMPg7KAQZ0R4mM8vI3SyDk0WG6X5LKE6JUiW lH4SIETf4LqB4KzTswHBgCXvKvsMeSDn60FaxV+7BFl1bbb9EhQvwkC8wToD0mcwc58rr0 HE3n2YzjUxosz86yqNQMTseIrDkQFIM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721036680; a=rsa-sha256; cv=none; b=LWrj7lZKr0nXYH0DJUNtei1P/k0Lpb7EgRlKuOKnWr/3z9JF5p+u4gNrhaTvxKVrGfJtER u2qVX92b65TOXKnkxaXhTedCnYrNVzpzQ2fAYVbYZ02fHHW4wx8734W1FKSFIxk7NiweLI dwmoKGy3azSQXMGiigkUUWC0ELz5qms= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=dLRvtHhe; spf=pass (imf14.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.152 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102]) (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-102.mailbox.org (Postfix) with ESMTPS id 4WMy3m2r4qz9sZh; Mon, 15 Jul 2024 11:45:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1721036708; 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=pnDOdJKQ2qCiJS1B5N8ch6auI8mL5/MTLJL29eG+61g=; b=dLRvtHhePFRpWc7HgyCwU2mg39Q97xo2kIH6p36nZCuSFTKc7ere3aFnjxxddOHtgXUOm8 rD/UjzIT2KDk5lDaIqpdhuLkJshHpFWC3yXKsWE3L8Uq/ta0AnVNNCo3Srp2qCKGp7SaJR 35Uz/JDwE8fEeD2Bv+H+omttN3Hsz7vBsQSvtUOHtfCbXX2L0Kwq6SemZiVX5m122Rg3Mb 1sZWryKUj1GlLgeW6JL9YQbZ8f9uzSUNrw9SUPuXuwDNCkyD+6t9+Skp5gsgToUUnWH6u1 gTEluWFSBo6cP9pUm3e+/BfQPdfgcSl7t6CAHbhkIHqcTEr8+N2W/YhW/K7Jgw== From: "Pankaj Raghav (Samsung)" To: david@fromorbit.com, willy@infradead.org, chandan.babu@oracle.com, djwong@kernel.org, brauner@kernel.org, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, yang@os.amperecomputing.com, linux-mm@kvack.org, john.g.garry@oracle.com, linux-fsdevel@vger.kernel.org, hare@suse.de, p.raghav@samsung.com, mcgrof@kernel.org, gost.dev@samsung.com, cl@os.amperecomputing.com, linux-xfs@vger.kernel.org, kernel@pankajraghav.com, ryan.roberts@arm.com, hch@lst.de, Zi Yan Subject: [PATCH v10 00/10] enable bs > ps in XFS Date: Mon, 15 Jul 2024 11:44:47 +0200 Message-ID: <20240715094457.452836-1-kernel@pankajraghav.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: BFEDD100012 X-Stat-Signature: 3tjpuig4m57ngmrtp54z4xrasdg3d73p X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1721036713-13157 X-HE-Meta: U2FsdGVkX1+65SdL43wRb+CunBuuIiuPdfrkJm+AEfe+dhRhcT9nNPZ/4C7TuHnI29EkoE1wPRZ/e3L/bkArPg1hCJLr2XrSKSJCpDNOhhLkXqbBxqZs7l7v7TQE8tniq7GXIGxWVwZS4iCmvPsDswTb5lljQ1E/MAtF1Q4xlgN44WKB8ZPnxpxW9Vrb5Ydx0FL05kEjVo4hxeFFxQKjs9Lez9KSb56vgOnYdfj2VIItwh66AVUQ+Vj35uDmmPxgnkG9+hcUMpcERXeK92w9Lx8EmPHuyKfcs6n7wRPhSTcXl+mEu6NQNuy9rXIemrb/Z8kwr+iJjSGf3AVxbG3dIjB15s/UPt2flfF7fhAB0ZduExUwNcCqd0M3WmGuoqEYaFAR3tmmhTvsjJ41Wv6gEAp7/g26j3umvWigyiToVbhGfDAlMfacleV8ImQgC28HCPAtE7LQTlYYAA1z8HWrmsuRczxrKaA81uZW9CrI8esQQnnoB76rkO6rnVEd3xgaemQWFwRd8h6/k2417/7lWbgE3kYPZlQnSMyBzUQRKNBuheKOOTvzbczWKVG3kt7bxY1RG87NIuvYX9Gm4R9UI2Onls3xhA1p4gtDZeYew7C53im8CpxvwakYUobNVyyNhgT6lRYcoDubhpQUFgdxnAe2gBgVdMRE918a0kwx0nQTfN9gI6ANk2w4nD2RIwSHFXf5KbZtD5GWWgkNPZqFfSTsFEBqt/+DsJJgy+Nlkt4jxC+6mLVQwPc4yWL6zqixDfdgC9vIV1SgnP+lKTzsboIfAL86IzsgHY+leYav893TsdLTAfDZ3yi8ti3ucUIZr7pwERvYlvQtISCiMrSjFsJik8u64chPoobFnwl1TRzZcyuDm5hkjM4p2u/+E6RJDjwaK72cZO42WE4QlQGMrmPQvx13hI+XsWqqiuxk98MEEPDxzKvTELMl5aXQIXDKYv7vMWjbDR5z1qlWh3B 1dToET15 IOab8vQJd1grd6KIn5bk/GwtT1kmgJo7aDfcv6eZFc+f6+DV+Lh7X1q15ykqDttbod8zId8tcchHKzkRqL2dBGVhJUsTEQyv1pgLaTOUPTqqEWBzaelH3TssLNL1/O33RFYwH8uQxMXUlnl3kKNA68B9j5oqA+KDVilsJ3l/fo2QvVDEmBR3xnngYLCTBLtg+dl5PgoggLldsEXc+zHy1/suF2kKl7usA5zF2w65mc8k0B84pMhVncVSZlgJW3uMveSZGfY+DFv4R6utU6/t5DvC8uOI7zA/Jg9F7lmlOtKmZFvHQQWhYS05vJSTUhEEN66kC6guO7cHMIIVV0g6MOGMNCOAc1s+qAFGkdily7hzd56iGuys/QorDD/12dkZUAcE6mxrdOHUd4UK7B7Xh0LrumtgHYAHL3E33vXsABfwFDQxTDjg5M+y4kWAghKlijpam82qjIJ2cnxQyaEovhetSyQ== 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 tenth version of the series that enables block size > page size (Large Block Size) in XFS. 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. 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. There are some tests that assumes block size < page size that needs to be fixed. We have a tree with fixes for xfstests [4], most of the changes have been posted already, and only a few minor changes need to be posted. Already part of these changes has been upstreamed to fstests, and new tests have also been written and are out for review, namely for mmap zeroing-around corner cases, compaction and fsstress races on mm, and stress testing folio truncation on file mapped folios. 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 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-v10 tag [6]. [0] https://lore.kernel.org/lkml/20230915183848.1018717-1-kernel@pankajraghav.com/ [1] https://www.youtube.com/watch?v=ar72r5Xf7x4 [2] https://lkml.kernel.org/r/20240501153120.4094530-1-willy@infradead.org [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 v9: - Added a mapping_max_folio_size_supported() that filesystems can call at mount time to check for mapping folio requirement. - Changed split_folio_to_list() to call THP_SPLIT_PAGE_FAILED for pmd folios. - Formatting changes in the first patch - Collected RVB from Hannes, Zi yan, Darrick and Dave. 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 | 30 +++++--- include/linux/huge_mm.h | 14 ++-- include/linux/pagemap.h | 127 ++++++++++++++++++++++++++++++---- mm/filemap.c | 36 ++++++---- mm/huge_memory.c | 59 ++++++++++++++-- mm/readahead.c | 83 ++++++++++++++++------ 14 files changed, 353 insertions(+), 84 deletions(-) base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233