Gavin Shan
3390916aca
mm/filemap: skip to create PMD-sized page cache if needed
...
On ARM64, HPAGE_PMD_ORDER is 13 when the base page size is 64KB. The
PMD-sized page cache can't be supported by xarray as the following error
messages indicate.
------------[ cut here ]------------
WARNING: CPU: 35 PID: 7484 at lib/xarray.c:1025 xas_split_alloc+0xf8/0x128
Modules linked in: nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib \
nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct \
nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 \
ip_set rfkill nf_tables nfnetlink vfat fat virtio_balloon drm \
fuse xfs libcrc32c crct10dif_ce ghash_ce sha2_ce sha256_arm64 \
sha1_ce virtio_net net_failover virtio_console virtio_blk failover \
dimlib virtio_mmio
CPU: 35 PID: 7484 Comm: test Kdump: loaded Tainted: G W 6.10.0-rc5-gavin+ #9
Hardware name: QEMU KVM Virtual Machine, BIOS edk2-20240524-1.el9 05/24/2024
pstate: 83400005 (Nzcv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)
pc : xas_split_alloc+0xf8/0x128
lr : split_huge_page_to_list_to_order+0x1c4/0x720
sp : ffff800087a4f6c0
x29: ffff800087a4f6c0 x28: ffff800087a4f720 x27: 000000001fffffff
x26: 0000000000000c40 x25: 000000000000000d x24: ffff00010625b858
x23: ffff800087a4f720 x22: ffffffdfc0780000 x21: 0000000000000000
x20: 0000000000000000 x19: ffffffdfc0780000 x18: 000000001ff40000
x17: 00000000ffffffff x16: 0000018000000000 x15: 51ec004000000000
x14: 0000e00000000000 x13: 0000000000002000 x12: 0000000000000020
x11: 51ec000000000000 x10: 51ece1c0ffff8000 x9 : ffffbeb961a44d28
x8 : 0000000000000003 x7 : ffffffdfc0456420 x6 : ffff0000e1aa6eb8
x5 : 20bf08b4fe778fca x4 : ffffffdfc0456420 x3 : 0000000000000c40
x2 : 000000000000000d x1 : 000000000000000c x0 : 0000000000000000
Call trace:
xas_split_alloc+0xf8/0x128
split_huge_page_to_list_to_order+0x1c4/0x720
truncate_inode_partial_folio+0xdc/0x160
truncate_inode_pages_range+0x1b4/0x4a8
truncate_pagecache_range+0x84/0xa0
xfs_flush_unmap_range+0x70/0x90 [xfs]
xfs_file_fallocate+0xfc/0x4d8 [xfs]
vfs_fallocate+0x124/0x2e8
ksys_fallocate+0x4c/0xa0
__arm64_sys_fallocate+0x24/0x38
invoke_syscall.constprop.0+0x7c/0xd8
do_el0_svc+0xb4/0xd0
el0_svc+0x44/0x1d8
el0t_64_sync_handler+0x134/0x150
el0t_64_sync+0x17c/0x180
Fix it by skipping to allocate PMD-sized page cache when its size is
larger than MAX_PAGECACHE_ORDER. For this specific case, we will fall to
regular path where the readahead window is determined by BDI's sysfs file
(read_ahead_kb).
Link: https://lkml.kernel.org/r/20240627003953.1262512-4-gshan@redhat.com
Fixes: 4687fdbb805a ("mm/filemap: Support VM_HUGEPAGE for file mappings")
Signed-off-by: Gavin Shan <gshan@redhat.com>
Suggested-by: David Hildenbrand <david@redhat.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Darrick J. Wong <djwong@kernel.org>
Cc: Don Dutile <ddutile@redhat.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: William Kucharski <william.kucharski@oracle.com>
Cc: Zhenyu Zhang <zhenyzha@redhat.com>
Cc: <stable@vger.kernel.org> [5.18+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2024-07-03 22:40:37 -07:00
..
2024-07-03 22:40:36 -07:00
2024-06-24 20:52:09 -07:00
2024-04-25 20:55:51 -07:00
2024-06-05 19:19:25 -07:00
2024-05-05 17:53:51 -07:00
2023-10-25 16:47:13 -07:00
2024-02-22 10:24:57 -08:00
2024-04-25 20:56:42 -07:00
2024-02-22 10:24:57 -08:00
2024-06-24 20:52:09 -07:00
2024-04-25 20:56:04 -07:00
2024-06-15 10:43:08 -07:00
2024-05-05 17:53:31 -07:00
2023-12-05 11:17:58 +01:00
2023-06-09 16:25:56 -07:00
2024-05-14 00:31:43 -07:00
2023-06-23 16:59:31 -07:00
2023-06-09 16:25:23 -07:00
2024-07-03 22:40:37 -07:00
2024-04-25 20:56:25 -07:00
2023-06-23 16:58:19 -07:00
2024-07-03 22:40:35 -07:00
2023-12-29 12:22:28 -08:00
2024-04-25 20:55:46 -07:00
2024-06-15 10:43:06 -07:00
2024-05-05 17:53:41 -07:00
2024-04-25 20:56:32 -07:00
2023-10-25 16:47:14 -07:00
2024-06-05 19:19:26 -07:00
2024-05-05 17:53:45 -07:00
2023-12-12 10:11:32 +01:00
2024-06-24 20:52:09 -07:00
2023-08-18 10:12:36 -07:00
2024-05-19 09:21:03 -07:00
2024-01-22 10:31:08 +01:00
2024-05-05 17:53:53 -07:00
2024-05-19 14:40:44 -07:00
2024-06-05 19:19:26 -07:00
2024-02-22 10:24:54 -08:00
2024-05-23 19:40:26 -07:00
2024-05-23 19:40:26 -07:00
2023-08-24 16:20:30 -07:00
2024-06-16 10:17:57 +03:00
2024-06-15 10:43:08 -07:00
2024-03-04 17:01:21 -08:00
2024-05-05 17:53:35 -07:00
2024-05-24 11:55:08 -07:00
2024-05-05 17:53:26 -07:00
2024-06-24 20:52:11 -07:00
2024-04-25 20:56:19 -07:00
2024-06-05 19:19:26 -07:00
2024-05-05 17:53:49 -07:00
2024-03-13 12:12:21 -07:00
2024-05-19 09:21:03 -07:00
2024-06-24 20:52:10 -07:00
2023-08-21 13:07:20 -07:00
2024-04-25 20:56:19 -07:00
2024-06-15 10:43:05 -07:00
2024-05-23 19:40:26 -07:00
2024-02-22 15:27:17 -08:00
2024-04-11 13:18:36 -04:00
2023-12-12 10:57:02 -08:00
2024-05-23 19:40:26 -07:00
2024-05-23 19:40:26 -07:00
2024-05-23 19:40:26 -07:00
2024-05-19 09:21:03 -07:00
2024-04-25 20:56:32 -07:00
2024-06-24 20:52:11 -07:00
2024-04-25 20:56:14 -07:00
2024-06-05 19:19:23 -07:00
2024-04-25 20:56:04 -07:00
2024-05-19 14:40:44 -07:00
2023-12-10 16:51:50 -08:00
2024-01-08 15:27:15 -08:00
2024-06-15 10:43:04 -07:00
2024-05-05 17:53:45 -07:00
2024-07-03 12:29:24 -07:00
2023-12-10 16:51:53 -08:00
2024-04-25 20:55:56 -07:00
2024-04-25 20:55:49 -07:00
2024-04-25 20:55:56 -07:00
2024-05-07 10:37:00 -07:00
2023-12-10 16:51:39 -08:00
2024-02-22 10:24:47 -08:00
2024-07-03 22:40:37 -07:00
2024-05-11 15:41:35 -07:00
2023-08-21 13:38:02 -07:00
2024-03-26 11:07:23 -07:00
2024-06-15 10:43:08 -07:00
2024-04-25 20:55:57 -07:00
2023-10-04 10:32:26 -07:00
2024-01-05 09:58:32 -08:00
2024-01-08 15:27:15 -08:00
2024-05-19 09:21:03 -07:00
2024-05-19 09:21:03 -07:00
2024-06-24 20:52:09 -07:00
2023-08-18 10:12:53 -07:00
2024-05-05 17:53:40 -07:00
2024-04-25 20:56:37 -07:00
2024-04-25 20:56:40 -07:00
2024-05-05 17:53:50 -07:00
2024-02-20 14:20:48 -08:00
2024-05-21 08:34:51 -07:00
2024-04-25 20:56:43 -07:00
2024-05-19 09:21:03 -07:00
2024-06-17 12:00:22 -07:00
2024-07-03 22:40:36 -07:00
2023-11-28 14:08:38 +01:00
2024-06-05 19:19:23 -07:00
2024-04-15 14:31:47 +02:00
2024-05-07 10:36:59 -07:00
2024-04-25 20:55:48 -07:00
2024-04-25 20:55:48 -07:00
2024-04-25 20:55:48 -07:00
2024-04-25 20:55:48 -07:00
2024-05-05 17:53:38 -07:00