From: Anand Jain <anand.jain@oracle.com>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>, Qu Wenruo <wqu@suse.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [bug report] Unable to handle kernel paging request
Date: Tue, 2 Feb 2021 21:37:46 +0800 [thread overview]
Message-ID: <91e2bcba-c326-4b5d-6242-e537b38ff455@oracle.com> (raw)
In-Reply-To: <913e7523-5700-27ad-4045-200d83e37deb@oracle.com>
It is much simpler to reproduce. I am using two systems with different
pagesizes to test the subpage readonly support.
On a host with pagesize = 4k.
truncate -s 3g 3g.img
mkfs.btrfs ./3g.img
mount -o loop,compress=zstd ./3g.img /btrfs
xfs_io -f -c "pwrite -S 0xab 0 128k" /btrfs/foo
umount /btrfs
Copy the file 3g.img to another host with pagesize = 64k.
mount -o ro,loop ./3g.img /btrfs
sha256sum /btrfs/foo
leads to Unable to handle kernel NULL pointer dereference
----------------
[ +0.001387] BTRFS warning (device loop0): csum hole found for disk
bytenr range [13672448, 13676544)
[ +0.001514] BTRFS warning (device loop0): csum failed root 5 ino 257
off 13697024 csum 0xbcd798f5 expected csum 0xf11c5ebf mirror 1
[ +0.002301] BTRFS error (device loop0): bdev /dev/loop0 errs: wr 0, rd
0, flush 0, corrupt 1, gen 0
[ +0.001647] Unable to handle kernel NULL pointer dereference at
virtual address 0000000000000000
[ +0.001670] Mem abort info:
[ +0.000506] ESR = 0x96000005
[ +0.000471] EC = 0x25: DABT (current EL), IL = 32 bits
[ +0.000783] SET = 0, FnV = 0
[ +0.000450] EA = 0, S1PTW = 0
[ +0.000462] Data abort info:
[ +0.000530] ISV = 0, ISS = 0x00000005
[ +0.000755] CM = 0, WnR = 0
[ +0.000466] user pgtable: 64k pages, 48-bit VAs, pgdp=000000010717ce00
[ +0.001027] [0000000000000000] pgd=0000000000000000,
p4d=0000000000000000, pud=0000000000000000
[ +0.001402] Internal error: Oops: 96000005 [#1] PREEMPT SMP
Message from syslogd@aa3 at Feb 2 08:18:05 ...
kernel:Internal error: Oops: 96000005 [#1] PREEMPT SMP
[ +0.000958] Modules linked in: btrfs blake2b_generic xor xor_neon
zstd_compress raid6_pq crct10dif_ce ip_tables x_tables ipv6
[ +0.001779] CPU: 25 PID: 5754 Comm: kworker/u64:1 Not tainted
5.11.0-rc5+ #10
[ +0.001122] Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
[ +0.001286] Workqueue: btrfs-endio btrfs_work_helper [btrfs]
[ +0.001139] pstate: 20000005 (nzCv daif -PAN -UAO -TCO BTYPE=--)
[ +0.001110] pc : __crc32c_le+0x84/0xe8
[ +0.000726] lr : chksum_digest+0x24/0x40
[ +0.000731] sp : ffff800017def8f0
[ +0.000624] x29: ffff800017def8f0 x28: ffff0000c84dca00
[ +0.000994] x27: ffff0000c44f5400 x26: ffff0000e3a008b0
[ +0.000985] x25: ffff800011df3948 x24: 0000004000000000
[ +0.001006] x23: ffff000000000000 x22: ffff800017defa00
[ +0.000993] x21: 0000000000000004 x20: ffff0000c84dca50
[ +0.000983] x19: ffff800017defc88 x18: 0000000000000010
[ +0.000995] x17: 0000000000000000 x16: ffff800009352a98
[ +0.001008] x15: 000009a9d48628c0 x14: 0000000000000209
[ +0.000999] x13: 00000000000003d1 x12: 0000000000000001
[ +0.000986] x11: 0000000000000001 x10: 00000000000009d0
[ +0.000982] x9 : ffff0000c5418064 x8 : 0000000000000000
[ +0.001008] x7 : 0000000000000000 x6 : ffff800011f23980
[ +0.001025] x5 : 00000000006f6964 x4 : ffff8000105dd7a8
[ +0.000997] x3 : ffff800017defc88 x2 : 0000000000010000
[ +0.000986] x1 : 0000000000000000 x0 : 00000000ffffffff
[ +0.001011] Call trace:
[ +0.000459] __crc32c_le+0x84/0xe8
[ +0.000649] crypto_shash_digest+0x34/0x58
[ +0.000766] check_compressed_csum+0xd0/0x2b0 [btrfs]
[ +0.001011] end_compressed_bio_read+0xb8/0x308 [btrfs]
[ +0.001060] bio_endio+0x12c/0x1d8
[ +0.000651] end_workqueue_fn+0x3c/0x60 [btrfs]
[ +0.000916] btrfs_work_helper+0xf4/0x5a8 [btrfs]
[ +0.000934] process_one_work+0x1ec/0x4c0
[ +0.000751] worker_thread+0x48/0x478
[ +0.000701] kthread+0x158/0x160
[ +0.000618] ret_from_fork+0x10/0x34
[ +0.000697] Code: 9ac55c08 9ac65d08 1a880000 b4000122 (a8c21023)
[ +0.001075] ---[ end trace d4f31b4f11a947b7 ]---
[ +14.775765] note: kworker/u64:1[5754] exited with preempt_count 1
------------------------
Thanks, Anand
On 2/2/2021 7:28 PM, Anand Jain wrote:
>
>
> On 2/2/2021 6:23 PM, Qu Wenruo wrote:
>>
>>
>> On 2021/2/2 下午5:21, Anand Jain wrote:
>>>
>>> Qu,
>>>
>>> fstests ran fine on an aarch64 kvm with this patch set.
>>
>> Do you mean subpage patchset?
>>
>> With 4K sector size?
>> No way it can run fine...
>
> No . fstests ran with sectorsize == pagesize == 64k. These aren't
> subpage though. I mean just regression checks.
>
>> Long enough fsstress can crash the kernel with btrfs_csum_one_bio()
>> unable to locate the corresponding ordered extent.
>>
>>> Further, I was running few hand tests as below, and it fails
>>> with - Unable to handle kernel paging.
>>>
>>> Test case looks something like..
>>>
>>> On x86_64 create btrfs on a file 11g
>>> copy /usr into /test-mnt stops at enospc
>>> set compression property on the root sunvol
>>> run defrag with -czstd
>>
>> I don't even consider compression a supported feature for subpage.
>
> It should fail the ro mount, which it didn't. Similar test case
> without compression is fine.
>
>> Are you really talking about the subpage patchset with 4K sector size,
>> on 64K page size AArch64?
>
> yes readonly mount test case as above.
>
> Thanks, Anand
>
>
>> If really so, I appreciate your effort on testing very much, it means
>> the patchset is doing way better than it is.
>> But I don't really believe it's even true to pass fstests....
>
>
>
>> Thanks,
>> Qu
>>
>>> truncate a large file 4gb
>>> punch holes on it
>>> truncate couple of smaller files
>>> unmount
>>> send file to an aarch64 (64k pagesize) kvm
>>> mount -o ro
>>> run sha256sum on all the files
>>>
>>> ---------------------
>>> [37012.027764] BTRFS warning (device loop0): csum failed root 5 ino 611
>>> off 228659200 csum 0x1dcefc2d expected csum 0x69412d2a mirror 1
>>> [37012.030971] BTRFS error (device loop0): bdev /dev/loop0 errs: wr 0,
>>> rd 0, flush 0, corrupt 9, gen 0
>>> [37012.036223] BTRFS warning (device loop0): csum failed root 5 ino 616
>>> off 228724736 csum 0x73f63661 expected csum 0xaf922a6f mirror 1
>>> [37012.036250] BTRFS error (device loop0): bdev /dev/loop0 errs: wr 0,
>>> rd 0, flush 0, corrupt 10, gen 0
>>> [37012.123917] Unable to handle kernel paging request at virtual address
>>> 0061d1f66c080000
>>> [37012.126104] Mem abort info:
>>> [37012.126951] ESR = 0x96000004
>>> [37012.127791] EC = 0x25: DABT (current EL), IL = 32 bits
>>> [37012.129207] SET = 0, FnV = 0
>>> [37012.130043] EA = 0, S1PTW = 0
>>> [37012.131269] Data abort info:
>>> [37012.132165] ISV = 0, ISS = 0x00000004
>>> [37012.133211] CM = 0, WnR = 0
>>> [37012.134014] [0061d1f66c080000] address between user and kernel
>>> address ranges
>>> [37012.136050] Internal error: Oops: 96000004 [#1] PREEMPT SMP
>>> [37012.137567] Modules linked in: btrfs blake2b_generic xor xor_neon
>>> zstd_compress raid6_pq crct10dif_ce ip_tables x_tables ipv6
>>> [37012.140742] CPU: 0 PID: 289001 Comm: kworker/u64:3 Not tainted
>>> 5.11.0-rc5+ #10
>>> [37012.142839] Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0
>>> 02/06/2015
>>> [37012.144787] Workqueue: btrfs-endio btrfs_work_helper [btrfs]
>>> [37012.146474] pstate: 20000005 (nzCv daif -PAN -UAO -TCO BTYPE=--)
>>> [37012.148175] pc : __crc32c_le+0x84/0xe8
>>> [37012.149266] lr : chksum_digest+0x24/0x40
>>> [37012.150420] sp : ffff80001638f8f0
>>> [37012.151491] x29: ffff80001638f8f0 x28: ffff0000c7bb0000
>>> [37012.152982] x27: ffff0000d1a27000 x26: ffff0002f21b56e0
>>> [37012.154565] x25: ffff800011df3948 x24: 0000004000000000
>>> [37012.156063] x23: ffff000000000000 x22: ffff80001638fa00
>>> [37012.157570] x21: 0000000000000004 x20: ffff0000c7bb0050
>>> [37012.159145] x19: ffff80001638fc88 x18: 0000000000000000
>>> [37012.160684] x17: 0000000000000000 x16: 0000000000000000
>>> [37012.162190] x15: 0000051d5454c764 x14: 000000000000017a
>>> [37012.163774] x13: 0000000000000145 x12: 0000000000000001
>>> [37012.165282] x11: 0000000000000000 x10: 00000000000009d0
>>> [37012.166849] x9 : ffff0000ca305564 x8 : 0000000000000000
>>> [37012.168395] x7 : 0000000000000000 x6 : ffff800011f23980
>>> [37012.169883] x5 : 00000000006f6964 x4 : ffff8000105dd7a8
>>> [37012.171476] x3 : ffff80001638fc88 x2 : 0000000000010000
>>> [37012.172997] x1 : bc61d1f66c080000 x0 : 00000000ffffffff
>>> [37012.174642] Call trace:
>>> [37012.175427] __crc32c_le+0x84/0xe8
>>> [37012.176419] crypto_shash_digest+0x34/0x58
>>> [37012.177616] check_compressed_csum+0xd0/0x2b0 [btrfs]
>>> [37012.179160] end_compressed_bio_read+0xb8/0x308 [btrfs]
>>> [37012.180731] bio_endio+0x12c/0x1d8
>>> [37012.181712] end_workqueue_fn+0x3c/0x60 [btrfs]
>>> [37012.183161] btrfs_work_helper+0xf4/0x5a8 [btrfs]
>>> [37012.184570] process_one_work+0x1ec/0x4c0
>>> [37012.185727] worker_thread+0x48/0x478
>>> [37012.186823] kthread+0x158/0x160
>>> [37012.187768] ret_from_fork+0x10/0x34
>>> [37012.188791] Code: 9ac55c08 9ac65d08 1a880000 b4000122 (a8c21023)
>>> [37012.190486] ---[ end trace 4f73e813d058b84c ]---
>>> [37019.180684] note: kworker/u64:3[289001] exited with preempt_count 1
>>> ---------------
>>>
>>> Could you please take a look?
>>>
>>> Thanks, Anand
next prev parent reply other threads:[~2021-02-02 13:40 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-26 8:33 [PATCH v5 00/18] btrfs: add read-only support for subpage sector size Qu Wenruo
2021-01-26 8:33 ` [PATCH v5 01/18] btrfs: merge PAGE_CLEAR_DIRTY and PAGE_SET_WRITEBACK to PAGE_START_WRITEBACK Qu Wenruo
2021-01-27 15:56 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 02/18] btrfs: set UNMAPPED bit early in btrfs_clone_extent_buffer() for subpage support Qu Wenruo
2021-01-27 15:56 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 03/18] btrfs: introduce the skeleton of btrfs_subpage structure Qu Wenruo
2021-01-26 8:33 ` [PATCH v5 04/18] btrfs: make attach_extent_buffer_page() handle subpage case Qu Wenruo
2021-01-27 16:01 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 05/18] btrfs: make grab_extent_buffer_from_page() " Qu Wenruo
2021-01-27 16:20 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 06/18] btrfs: support subpage for extent buffer page release Qu Wenruo
2021-01-27 16:21 ` Josef Bacik
2021-02-01 15:32 ` David Sterba
2021-01-26 8:33 ` [PATCH v5 07/18] btrfs: attach private to dummy extent buffer pages Qu Wenruo
2021-01-27 16:21 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 08/18] btrfs: introduce helpers for subpage uptodate status Qu Wenruo
2021-01-27 16:34 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 09/18] btrfs: introduce helpers for subpage error status Qu Wenruo
2021-01-27 16:34 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 10/18] btrfs: support subpage in set/clear_extent_buffer_uptodate() Qu Wenruo
2021-01-27 16:35 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 11/18] btrfs: support subpage in btrfs_clone_extent_buffer Qu Wenruo
2021-01-27 16:35 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 12/18] btrfs: support subpage in try_release_extent_buffer() Qu Wenruo
2021-01-27 16:37 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 13/18] btrfs: introduce read_extent_buffer_subpage() Qu Wenruo
2021-01-27 16:39 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 14/18] btrfs: support subpage in endio_readpage_update_page_status() Qu Wenruo
2021-01-27 16:42 ` Josef Bacik
2021-01-26 8:33 ` [PATCH v5 15/18] btrfs: introduce subpage metadata validation check Qu Wenruo
2021-01-27 16:47 ` Josef Bacik
2021-01-26 8:34 ` [PATCH v5 16/18] btrfs: introduce btrfs_subpage for data inodes Qu Wenruo
2021-01-27 16:56 ` Josef Bacik
2021-02-01 15:42 ` David Sterba
2021-01-26 8:34 ` [PATCH v5 17/18] btrfs: integrate page status update for data read path into begin/end_page_read() Qu Wenruo
2021-01-27 17:13 ` Josef Bacik
2021-02-01 15:47 ` David Sterba
2021-01-26 8:34 ` [PATCH v5 18/18] btrfs: allow RO mount of 4K sector size fs on 64K page system Qu Wenruo
2021-01-27 17:13 ` Josef Bacik
2021-02-01 15:49 ` David Sterba
2021-01-27 16:17 ` [PATCH v5 00/18] btrfs: add read-only support for subpage sector size Josef Bacik
2021-01-28 0:30 ` Qu Wenruo
2021-01-28 10:34 ` David Sterba
2021-01-28 10:51 ` Qu Wenruo
2021-02-01 14:50 ` David Sterba
2021-02-01 15:55 ` David Sterba
2021-02-02 9:21 ` [bug report] Unable to handle kernel paging request Anand Jain
2021-02-02 10:23 ` Qu Wenruo
2021-02-02 11:28 ` Anand Jain
2021-02-02 13:37 ` Anand Jain [this message]
2021-02-04 5:13 ` Qu Wenruo
2021-02-03 13:20 ` [PATCH v5 00/18] btrfs: add read-only support for subpage sector size David Sterba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91e2bcba-c326-4b5d-6242-e537b38ff455@oracle.com \
--to=anand.jain@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=quwenruo.btrfs@gmx.com \
--cc=wqu@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).