linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  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).