Shiyang Ruan
f76b3a3287
fsdax: force clear dirty mark if CoW
...
XFS allows CoW on non-shared extents to combat fragmentation[1]. The old
non-shared extent could be mwrited before, its dax entry is marked dirty.
This results in a WARNing:
[ 28.512349] ------------[ cut here ]------------
[ 28.512622] WARNING: CPU: 2 PID: 5255 at fs/dax.c:390 dax_insert_entry+0x342/0x390
[ 28.513050] Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 nfs lockd grace fscache netfs nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables
[ 28.515462] CPU: 2 PID: 5255 Comm: fsstress Kdump: loaded Not tainted 6.3.0-rc1-00001-g85e1481e19c1-dirty #117
[ 28.515902] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS Arch Linux 1.16.1-1-1 04/01/2014
[ 28.516307] RIP: 0010:dax_insert_entry+0x342/0x390
[ 28.516536] Code: 30 5b 5d 41 5c 41 5d 41 5e 41 5f c3 cc cc cc cc 48 8b 45 20 48 83 c0 01 e9 e2 fe ff ff 48 8b 45 20 48 83 c0 01 e9 cd fe ff ff <0f> 0b e9 53 ff ff ff 48 8b 7c 24 08 31 f6 e8 1b 61 a1 00 eb 8c 48
[ 28.517417] RSP: 0000:ffffc9000845fb18 EFLAGS: 00010086
[ 28.517721] RAX: 0000000000000053 RBX: 0000000000000155 RCX: 000000000018824b
[ 28.518113] RDX: 0000000000000000 RSI: ffffffff827525a6 RDI: 00000000ffffffff
[ 28.518515] RBP: ffffea00062092c0 R08: 0000000000000000 R09: ffffc9000845f9c8
[ 28.518905] R10: 0000000000000003 R11: ffffffff82ddb7e8 R12: 0000000000000155
[ 28.519301] R13: 0000000000000000 R14: 000000000018824b R15: ffff88810cfa76b8
[ 28.519703] FS: 00007f14a0c94740(0000) GS:ffff88817bd00000(0000) knlGS:0000000000000000
[ 28.520148] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 28.520472] CR2: 00007f14a0c8d000 CR3: 000000010321c004 CR4: 0000000000770ee0
[ 28.520863] PKRU: 55555554
[ 28.521043] Call Trace:
[ 28.521219] <TASK>
[ 28.521368] dax_fault_iter+0x196/0x390
[ 28.521595] dax_iomap_pte_fault+0x19b/0x3d0
[ 28.521852] __xfs_filemap_fault+0x234/0x2b0
[ 28.522116] __do_fault+0x30/0x130
[ 28.522334] do_fault+0x193/0x340
[ 28.522586] __handle_mm_fault+0x2d3/0x690
[ 28.522975] handle_mm_fault+0xe6/0x2c0
[ 28.523259] do_user_addr_fault+0x1bc/0x6f0
[ 28.523521] exc_page_fault+0x60/0x140
[ 28.523763] asm_exc_page_fault+0x22/0x30
[ 28.524001] RIP: 0033:0x7f14a0b589ca
[ 28.524225] Code: c5 fe 7f 07 c5 fe 7f 47 20 c5 fe 7f 47 40 c5 fe 7f 47 60 c5 f8 77 c3 66 0f 1f 84 00 00 00 00 00 40 0f b6 c6 48 89 d1 48 89 fa <f3> aa 48 89 d0 c5 f8 77 c3 66 66 2e 0f 1f 84 00 00 00 00 00 66 90
[ 28.525198] RSP: 002b:00007fff1dea1c98 EFLAGS: 00010202
[ 28.525505] RAX: 000000000000001e RBX: 000000000014a000 RCX: 0000000000006046
[ 28.525895] RDX: 00007f14a0c82000 RSI: 000000000000001e RDI: 00007f14a0c8d000
[ 28.526290] RBP: 000000000000006f R08: 0000000000000004 R09: 000000000014a000
[ 28.526681] R10: 0000000000000008 R11: 0000000000000246 R12: 028f5c28f5c28f5c
[ 28.527067] R13: 8f5c28f5c28f5c29 R14: 0000000000011046 R15: 00007f14a0c946c0
[ 28.527449] </TASK>
[ 28.527600] ---[ end trace 0000000000000000 ]---
To be able to delete this entry, clear its dirty mark before
invalidate_inode_pages2_range().
[1] https://lore.kernel.org/linux-xfs/20230321151339.GA11376@frogsfrogsfrogs/
Link: https://lkml.kernel.org/r/1679653680-2-1-git-send-email-ruansy.fnst@fujitsu.com
Fixes: f80e1668888f3 ("fsdax: invalidate pages when CoW")
Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Darrick J. Wong <djwong@kernel.org>
Cc: Jan Kara <jack@suse.cz>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-04-05 18:06:23 -07:00
..
2023-03-01 08:52:49 -08:00
2023-01-19 09:24:02 +01:00
2023-02-20 14:10:36 -08:00
2023-02-23 17:09:35 -08:00
2023-01-19 09:24:28 +01:00
2022-08-02 12:34:03 -04:00
2023-01-19 09:24:28 +01:00
2023-03-24 08:32:10 -07:00
2023-01-19 09:24:28 +01:00
2023-03-02 10:48:30 -08:00
2023-03-24 14:37:12 -05:00
2023-02-21 11:07:23 -08:00
2023-01-19 09:24:28 +01:00
2023-03-02 21:54:23 -08:00
2023-03-18 21:08:03 -07:00
2023-02-27 10:04:49 -08:00
2023-02-24 12:58:55 -08:00
2023-02-21 18:10:50 -08:00
2023-02-23 14:41:48 -08:00
2023-03-09 23:36:04 +08:00
2023-03-01 08:42:27 -08:00
2023-01-19 09:24:28 +01:00
2023-02-20 14:10:36 -08:00
2023-03-17 21:53:52 -04:00
2023-02-27 16:18:51 -08:00
2023-02-23 17:55:40 -08:00
2023-02-23 17:55:40 -08:00
2023-01-30 12:51:54 +00:00
2023-02-27 09:53:58 -08:00
2023-03-23 19:37:56 +01:00
2023-02-23 17:55:40 -08:00
2023-03-02 21:54:23 -08:00
2023-03-01 09:13:00 -08:00
2023-01-19 09:24:26 +01:00
2023-02-23 17:09:35 -08:00
2023-02-23 17:09:35 -08:00
2022-10-12 11:00:22 -07:00
2023-03-12 08:55:55 -07:00
2023-03-01 09:06:51 -08:00
2023-03-01 08:47:19 -08:00
2023-02-24 12:58:55 -08:00
2023-03-24 00:23:13 -05:00
2023-03-14 14:00:55 -04:00
2023-02-24 19:01:15 -08:00
2023-03-01 18:18:25 -06:00
2023-03-21 14:48:38 -07:00
2023-01-11 06:52:32 -05:00
2023-03-21 14:48:38 -07:00
2023-03-23 17:18:32 -07:00
2023-02-21 10:45:51 -08:00
2023-02-23 17:55:40 -08:00
2023-02-23 17:09:35 -08:00
2023-03-07 17:04:55 -08:00
2023-01-19 09:24:28 +01:00
2023-02-23 17:09:35 -08:00
2023-02-20 11:53:11 -08:00
2023-03-01 10:01:22 -08:00
2022-12-23 11:55:54 -08:00
2022-09-11 21:55:07 -07:00
2023-02-21 10:45:51 -08:00
2023-02-23 17:09:35 -08:00
2023-02-23 17:09:35 -08:00
2023-01-18 17:12:56 -08:00
2023-02-20 17:25:43 -06:00
2023-02-03 17:52:25 -08:00
2023-02-24 19:03:26 -08:00
2023-01-19 09:24:26 +01:00
2023-03-01 09:06:51 -08:00
2023-03-06 16:38:25 +01:00
2023-01-19 09:24:28 +01:00
2023-01-19 09:24:26 +01:00
2023-03-15 22:50:41 -07:00
2023-03-24 13:16:01 -07:00
2023-03-21 06:36:43 +09:00
2023-02-10 15:34:48 -08:00
2022-08-20 11:34:04 -04:00
2023-02-20 11:53:11 -08:00
2023-01-19 09:24:28 +01:00
2023-01-05 15:12:12 +00:00
2023-01-31 15:01:20 +01:00
2022-12-02 13:57:04 -08:00
2023-02-23 17:09:35 -08:00
2022-12-02 17:48:59 +01:00
2023-02-23 17:09:35 -08:00
2022-08-20 11:34:33 -04:00
2023-04-05 18:06:23 -07:00
2022-10-10 19:45:17 -07:00
2023-01-26 10:30:56 -07:00
2022-11-22 06:07:55 -07:00
2022-11-21 07:45:29 -07:00
2023-02-23 17:09:35 -08:00
2023-02-20 11:53:11 -08:00
2022-09-01 17:36:39 -04:00
2023-01-11 06:52:32 -05:00
2023-03-09 22:46:21 -05:00
2022-12-01 10:46:54 -05:00
2023-02-02 22:33:19 -08:00
2023-01-19 09:24:28 +01:00
2023-02-20 11:53:11 -08:00
2023-02-20 14:10:36 -08:00
2023-01-19 09:24:29 +01:00
2023-01-26 10:30:56 -07:00
2022-10-10 14:21:11 -07:00
2023-02-20 11:53:11 -08:00
2023-03-09 22:36:12 +01:00
2023-02-20 14:10:36 -08:00
2022-12-08 21:49:25 -05:00
2023-01-19 09:24:30 +01:00
2023-02-23 17:09:35 -08:00
2023-02-22 14:21:40 -08:00
2023-02-24 19:20:07 -08:00
2023-01-11 15:47:40 -05:00
2023-02-27 16:39:19 -08:00
2022-08-20 11:34:04 -04:00
2022-12-21 14:45:25 +01:00
2023-02-20 12:14:33 -08:00
2022-12-12 18:29:54 -08:00
2022-08-17 17:25:04 -04:00
2023-01-19 09:24:29 +01:00
2022-11-25 13:01:55 -05:00
2023-03-09 10:10:31 +01:00
2023-02-20 11:53:11 -08:00
2023-03-14 10:30:30 -07:00
2023-02-09 16:51:39 -08:00
2023-02-20 11:53:11 -08:00
2023-02-20 11:53:11 -08:00