All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Anand Jain <anand.jain@oracle.com>, Qu Wenruo <wqu@suse.com>,
	linux-btrfs@vger.kernel.org
Subject: Re: [bug report] Unable to handle kernel paging request
Date: Thu, 4 Feb 2021 13:13:19 +0800	[thread overview]
Message-ID: <61d23f81-dd3e-6bb6-9423-81b3dadb519c@gmx.com> (raw)
In-Reply-To: <91e2bcba-c326-4b5d-6242-e537b38ff455@oracle.com>



On 2021/2/2 下午9:37, Anand Jain wrote:
>
>
> 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

Thanks for the report.

Although in my case, I can't reproduce the crash, but only csum data
mismatch with "csum hole found for disk bytenr range" error message.

Anyway, it should be fixed for compressed read.

I'll investigate the case.

Thanks,
Qu
> ----------------
> [  +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
>

  reply	other threads:[~2021-02-04  5:15 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
2021-02-04  5:13         ` Qu Wenruo [this message]
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=61d23f81-dd3e-6bb6-9423-81b3dadb519c@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=anand.jain@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.