linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: dsterba@suse.cz, Qu Wenruo <wqu@suse.com>, linux-btrfs@vger.kernel.org
Subject: Re: [Patch v2 00/42] btrfs: add data write support for subpage
Date: Sat, 15 May 2021 06:45:42 +0800	[thread overview]
Message-ID: <b2490ac7-7bb8-238c-1602-043bfcb09c8f@gmx.com> (raw)
In-Reply-To: <20210514113040.GV7604@twin.jikos.cz>



On 2021/5/14 下午7:30, David Sterba wrote:
> On Thu, May 13, 2021 at 10:21:24AM +0800, Qu Wenruo wrote:
>>> On 2021/5/13 上午6:18, David Sterba wrote:
>>>> On Wed, Apr 28, 2021 at 07:03:07AM +0800, Qu Wenruo wrote:
>>>>> === Patchset structure ===
>>>>>
>>>>> Patch 01~02:    hardcoded PAGE_SIZE related fixes
>>>>> Patch 03~05:    submit_extent_page() refactor which will reduce overhead
>>>>>          for write path.
>>>>>          This should benefit 4K page the most. Although the
>>>>>          primary objective is just to make the code easier to
>>>>>          read.
>>>>> Patch 06:    Cleanup for metadata writepath, to reduce the impact on
>>>>>          regular sectorsize path.
>>>>> Patch 07~13:    PagePrivate2 and ordered extent related refactor.
>>>>>          Although it's still a refactor, the refactor is pretty
>>>>>          important for subpage data write path, as for subpage we
>>>>>          could have btrfs_writepage_endio_finish_ordered() call
>>>>>          across several sectors, which may or may not have
>>>>>          ordered extent for those sectors.
>>>>>
>>>>> ^^^ Above patches are all subpage data write preparation ^^^
>>>>
>>>> Do you think the patches 1-13 are safe to be merged independently? I've
>>>> paged through the whole patchset and some of the patches are obviously
>>>> preparatory stuff so they can go in without much risk.
>>>
>>> Yes. I believe they are OK for merge.
>>>
>>> I have run the full tests on x86 VM for the whole patchset, no new
>>> regression.
>>>
>>> Especially patch 03~05 would benefit 4K page size the most, thus merging
>>> them first would definitely help.
>>>
>>> Just let me to run the tests with patch 1~13 only, to see if there is
>>> any special dependency missing.
>>
>> Yep, patch 1~13 with the v5 read time repair patches are safe for x86.
>
> All fine up to generic/521 that got stuck. It looks like some use after
> free, check the 2nd line of the dump, there's the 0x6b6b signature
>
> generic/521		[00:33:06][26901.358817] run fstests generic/521 at 2021-05-14 00:33:06
> [27273.028163] general protection fault, probably for non-canonical address 0x6b6b6b6b6b6b6a9b: 0000 [#1] PREEMPT SMP
> [27273.030710] CPU: 0 PID: 20046 Comm: fsx Not tainted 5.13.0-rc1-default+ #1463
> [27273.032295] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba527-rebuilt.opensuse.org 04/01/2014
> [27273.034731] RIP: 0010:btrfs_lookup_first_ordered_range+0x46/0x140 [btrfs]

It's in the new function introduced, and considering how few parameteres
are passed in, I guess it's really something wrong in the function,
other than some conflicts with other patches.

Any line number for it?

Thanks,
Qu

> [27273.040247] RSP: 0018:ffffb7ac06617b10 EFLAGS: 00010002
> [27273.041365] RAX: 6b6b6b6b6b6b6b6b RBX: 6b6b6b6b6b6b6b6b RCX: ffffffffffffffff
> [27273.042841] RDX: 6b6b6b6b6b6b6b6b RSI: ffffffffc01b3e09 RDI: ffff93c444e397d0
> [27273.044388] RBP: 0000000000001000 R08: 0000000000000001 R09: 0000000000000000
> [27273.045938] R10: ffffffffc01b3e09 R11: 0000000000000000 R12: 000000000002f000
> [27273.047409] R13: ffff93c48ae79368 R14: ffff93c444e397b8 R15: 000000000002f000
> [27273.048959] FS:  00007fb0f0a5e740(0000) GS:ffff93c4bd600000(0000) knlGS:0000000000000000
> [27273.050674] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [27273.051971] CR2: 00007fb0f0936000 CR3: 0000000028bf4001 CR4: 0000000000170eb0
> [27273.053548] Call Trace:
> [27273.054145]  btrfs_invalidatepage+0xd3/0x390 [btrfs]
> [27273.055276]  truncate_cleanup_page+0xda/0x170
> [27273.056243]  truncate_inode_pages_range+0x131/0x5a0
> [27273.057334]  ? trace_btrfs_space_reservation+0x33/0xf0 [btrfs]
> [27273.058642]  ? lock_acquire+0xa0/0x150
> [27273.059506]  ? unmap_mapping_pages+0x4d/0x130
> [27273.060491]  ? do_raw_spin_unlock+0x4b/0xa0
> [27273.061477]  ? unmap_mapping_pages+0x5e/0x130
> [27273.062482]  btrfs_punch_hole_lock_range+0xc5/0x130 [btrfs]
> [27273.063738]  btrfs_zero_range+0x1d7/0x4b0 [btrfs]
> [27273.064833]  btrfs_fallocate+0x6b4/0x890 [btrfs]
> [27273.065921]  ? __x64_sys_fallocate+0x3e/0x70
> [27273.066920]  ? __do_sys_newfstatat+0x40/0x70
> [27273.067875]  vfs_fallocate+0x12e/0x420
> [27273.068738]  __x64_sys_fallocate+0x3e/0x70
> [27273.069684]  do_syscall_64+0x3f/0xb0
> [27273.070539]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [27273.071641] RIP: 0033:0x7fb0f0b5716a
> [27273.076352] RSP: 002b:00007fff6503e0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000011d
> [27273.078019] RAX: ffffffffffffffda RBX: 0000000000007909 RCX: 00007fb0f0b5716a
> [27273.079522] RDX: 000000000002956d RSI: 0000000000000010 RDI: 0000000000000003
> [27273.081020] RBP: 000000000002956d R08: 0000000000007909 R09: 000000000002956d
> [27273.082542] R10: 0000000000007909 R11: 0000000000000246 R12: 0000000000000000
> [27273.083984] R13: 0000000000030e76 R14: 0000000000000010 R15: 000000000002956d
> [27273.090924] ---[ end trace f729bc2baa232124 ]---
> [27273.092000] RIP: 0010:btrfs_lookup_first_ordered_range+0x46/0x140 [btrfs]
> [27273.097206] RSP: 0018:ffffb7ac06617b10 EFLAGS: 00010002
> [27273.098338] RAX: 6b6b6b6b6b6b6b6b RBX: 6b6b6b6b6b6b6b6b RCX: ffffffffffffffff
> [27273.099843] RDX: 6b6b6b6b6b6b6b6b RSI: ffffffffc01b3e09 RDI: ffff93c444e397d0
> [27273.101302] RBP: 0000000000001000 R08: 0000000000000001 R09: 0000000000000000
> [27273.102827] R10: ffffffffc01b3e09 R11: 0000000000000000 R12: 000000000002f000
> [27273.104328] R13: ffff93c48ae79368 R14: ffff93c444e397b8 R15: 000000000002f000
> [27273.105786] FS:  00007fb0f0a5e740(0000) GS:ffff93c4bd600000(0000) knlGS:0000000000000000
> [27273.107478] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [27273.108672] CR2: 00007fb0f0936000 CR3: 0000000028bf4001 CR4: 0000000000170eb0
> [27273.110157] note: fsx[20046] exited with preempt_count 1
> [27273.111323] BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:49
> [27273.113204] in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 20046, name: fsx
> [27273.114784] INFO: lockdep is turned off.
> [27273.115614] irq event stamp: 0
> [27273.116355] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
> [27273.117657] hardirqs last disabled at (0): [<ffffffff9c0675a3>] copy_process+0x3f3/0x1550
> [27273.119308] softirqs last  enabled at (0): [<ffffffff9c0675a3>] copy_process+0x3f3/0x1550
> [27273.129243] softirqs last disabled at (0): [<0000000000000000>] 0x0
> [27273.130557] CPU: 0 PID: 20046 Comm: fsx Tainted: G      D           5.13.0-rc1-default+ #1463
> [27273.132460] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba527-rebuilt.opensuse.org 04/01/2014
> [27273.135049] Call Trace:
> [27273.135710]  dump_stack+0x6d/0x89
> [27273.136549]  ___might_sleep.cold+0xf2/0x132
> [27273.137575]  exit_signals+0x1d/0x350
> [27273.138451]  do_exit+0xa6/0x4a0
> [27273.139238]  rewind_stack_do_exit+0x17/0x17
> [27273.140270] RIP: 0033:0x7fb0f0b5716a
> [27273.144797] RSP: 002b:00007fff6503e0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000011d
> [27273.146353] RAX: ffffffffffffffda RBX: 0000000000007909 RCX: 00007fb0f0b5716a
> [27273.147736] RDX: 000000000002956d RSI: 0000000000000010 RDI: 0000000000000003
> [27273.149157] RBP: 000000000002956d R08: 0000000000007909 R09: 000000000002956d
> [27273.150620] R10: 0000000000007909 R11: 0000000000000246 R12: 0000000000000000
> [27273.152094] R13: 0000000000030e76 R14: 0000000000000010 R15: 000000000002956d
>

  parent reply	other threads:[~2021-05-14 22:45 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-27 23:03 [Patch v2 00/42] btrfs: add data write support for subpage Qu Wenruo
2021-04-27 23:03 ` [Patch v2 01/42] btrfs: scrub: fix subpage scrub repair error caused by hardcoded PAGE_SIZE Qu Wenruo
2021-05-13 22:57   ` David Sterba
2021-05-13 23:32     ` Qu Wenruo
2021-04-27 23:03 ` [Patch v2 02/42] btrfs: make free space cache size consistent across different PAGE_SIZE Qu Wenruo
2021-04-27 23:03 ` [Patch v2 03/42] btrfs: remove the unused parameter @len for btrfs_bio_fits_in_stripe() Qu Wenruo
2021-05-13 22:58   ` David Sterba
2021-05-13 23:07   ` David Sterba
2021-04-27 23:03 ` [Patch v2 04/42] btrfs: allow btrfs_bio_fits_in_stripe() to accept bio without any page Qu Wenruo
2021-04-27 23:03 ` [Patch v2 05/42] btrfs: refactor submit_extent_page() to make bio and its flag tracing easier Qu Wenruo
2021-05-13 23:03   ` David Sterba
2021-05-21 11:06   ` Johannes Thumshirn
2021-05-21 11:26     ` Qu Wenruo
2021-05-21 13:30       ` David Sterba
2021-04-27 23:03 ` [Patch v2 06/42] btrfs: make subpage metadata write path to call its own endio functions Qu Wenruo
2021-04-27 23:03 ` [Patch v2 07/42] btrfs: pass btrfs_inode into btrfs_writepage_endio_finish_ordered() Qu Wenruo
2021-05-13 23:06   ` David Sterba
2021-05-13 23:35     ` Qu Wenruo
2021-05-21 14:27   ` Josef Bacik
2021-05-21 20:22     ` David Sterba
2021-05-22  0:24     ` Qu Wenruo
2021-05-23  7:40       ` Qu Wenruo
2021-05-23 13:43         ` Josef Bacik
2021-05-23 13:50           ` Qu Wenruo
2021-05-23 14:08             ` Josef Bacik
2021-04-27 23:03 ` [Patch v2 08/42] btrfs: make Private2 lifespan more consistent Qu Wenruo
2021-04-27 23:03 ` [Patch v2 09/42] btrfs: refactor how we finish ordered extent io for endio functions Qu Wenruo
2021-05-13 23:11   ` David Sterba
2021-04-27 23:03 ` [Patch v2 10/42] btrfs: update the comments in btrfs_invalidatepage() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 11/42] btrfs: introduce btrfs_lookup_first_ordered_range() Qu Wenruo
2021-05-13 23:13   ` David Sterba
2021-04-27 23:03 ` [Patch v2 12/42] btrfs: refactor btrfs_invalidatepage() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 13/42] btrfs: rename PagePrivate2 to PageOrdered inside btrfs Qu Wenruo
2021-04-27 23:03 ` [Patch v2 14/42] btrfs: pass bytenr directly to __process_pages_contig() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 15/42] btrfs: refactor the page status update into process_one_page() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 16/42] btrfs: provide btrfs_page_clamp_*() helpers Qu Wenruo
2021-04-27 23:03 ` [Patch v2 17/42] btrfs: only require sector size alignment for end_bio_extent_writepage() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 18/42] btrfs: make btrfs_dirty_pages() to be subpage compatible Qu Wenruo
2021-04-27 23:03 ` [Patch v2 19/42] btrfs: make __process_pages_contig() to handle subpage dirty/error/writeback status Qu Wenruo
2021-04-27 23:03 ` [Patch v2 20/42] btrfs: make end_bio_extent_writepage() to be subpage compatible Qu Wenruo
2021-04-27 23:03 ` [Patch v2 21/42] btrfs: make process_one_page() to handle subpage locking Qu Wenruo
2021-04-27 23:03 ` [Patch v2 22/42] btrfs: introduce helpers for subpage ordered status Qu Wenruo
2021-04-27 23:03 ` [Patch v2 23/42] btrfs: make page Ordered bit to be subpage compatible Qu Wenruo
2021-04-27 23:03 ` [Patch v2 24/42] btrfs: update locked page dirty/writeback/error bits in __process_pages_contig Qu Wenruo
2021-04-27 23:03 ` [Patch v2 25/42] btrfs: prevent extent_clear_unlock_delalloc() to unlock page not locked by __process_pages_contig() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 26/42] btrfs: make btrfs_set_range_writeback() subpage compatible Qu Wenruo
2021-04-27 23:03 ` [Patch v2 27/42] btrfs: make __extent_writepage_io() only submit dirty range for subpage Qu Wenruo
2021-04-27 23:03 ` [Patch v2 28/42] btrfs: make btrfs_truncate_block() to be subpage compatible Qu Wenruo
2021-04-27 23:03 ` [Patch v2 29/42] btrfs: make btrfs_page_mkwrite() " Qu Wenruo
2021-04-27 23:03 ` [Patch v2 30/42] btrfs: reflink: make copy_inline_to_page() " Qu Wenruo
2021-04-27 23:03 ` [Patch v2 31/42] btrfs: fix the filemap_range_has_page() call in btrfs_punch_hole_lock_range() Qu Wenruo
2021-04-27 23:03 ` [Patch v2 32/42] btrfs: don't clear page extent mapped if we're not invalidating the full page Qu Wenruo
2021-04-27 23:03 ` [Patch v2 33/42] btrfs: extract relocation page read and dirty part into its own function Qu Wenruo
2021-04-27 23:03 ` [Patch v2 34/42] btrfs: make relocate_one_page() to handle subpage case Qu Wenruo
2021-04-27 23:03 ` [Patch v2 35/42] btrfs: fix wild subpage writeback which does not have ordered extent Qu Wenruo
2021-04-27 23:03 ` [Patch v2 36/42] btrfs: disable inline extent creation for subpage Qu Wenruo
2021-05-04  4:28   ` Qu Wenruo
2021-04-27 23:03 ` [Patch v2 37/42] btrfs: skip validation for subpage read repair Qu Wenruo
2021-04-27 23:03 ` [Patch v2 38/42] btrfs: allow submit_extent_page() to do bio split for subpage Qu Wenruo
2021-04-27 23:03 ` [Patch v2 39/42] btrfs: reject raid5/6 fs " Qu Wenruo
2021-04-28 14:22   ` Neal Gompa
2021-04-28 23:11     ` Qu Wenruo
2021-05-12 22:04       ` David Sterba
2021-04-27 23:03 ` [Patch v2 40/42] btrfs: fix a crash caused by race between prepare_pages() and btrfs_releasepage() Qu Wenruo
2021-04-28 10:56   ` Filipe Manana
2021-04-27 23:03 ` [Patch v2 41/42] btrfs: fix the use-after-free bug in writeback subpage helper Qu Wenruo
2021-05-06 23:46   ` Qu Wenruo
2021-05-07  4:57     ` Ritesh Harjani
2021-05-07  5:14       ` Qu Wenruo
2021-05-10  8:38         ` Qu Wenruo
2021-05-10 12:29           ` Ritesh Harjani
2021-05-10 13:10             ` Qu Wenruo
2021-05-11 10:48               ` Ritesh Harjani
2021-05-11 11:15                 ` Qu Wenruo
2021-05-12  1:49                   ` Qu Wenruo
2021-05-12  7:09                     ` Ritesh Harjani
2021-05-13 16:33                       ` Ritesh Harjani
2021-05-13 21:36                         ` Ritesh Harjani
2021-05-13 23:41                           ` Qu Wenruo
2021-05-14 15:08                             ` Ritesh Harjani
2021-05-14 17:53                               ` Ritesh Harjani
2021-05-14 22:22                                 ` Qu Wenruo
2021-05-15  9:59                                   ` Ritesh Harjani
2021-05-15 10:15                                     ` Qu Wenruo
2021-05-25  4:43                                       ` Ritesh Harjani
2021-05-25  5:52                                         ` Qu Wenruo
2021-05-25  6:14                                           ` Qu Wenruo
2021-05-25  9:23                                             ` Ritesh Harjani
2021-05-25  9:45                                               ` Qu Wenruo
2021-05-25  9:49                                                 ` Qu Wenruo
2021-05-25 10:20                                                   ` Ritesh Harjani
2021-05-25 11:41                                                     ` Qu Wenruo
2021-05-25 13:02                                                       ` Ritesh Harjani
2021-05-26  5:29                                                         ` Ritesh Harjani
2021-05-26  5:58                                                           ` Qu Wenruo
2021-05-26 13:45                                                             ` Ritesh Harjani
2021-05-28  8:26                                                               ` Qu Wenruo
2021-05-28  8:59                                                                 ` Ritesh Harjani
2021-05-28 10:25                                                                   ` Qu Wenruo
2021-05-30  1:50                                                                     ` Qu Wenruo
2021-04-27 23:03 ` [Patch v2 42/42] btrfs: allow read-write for 4K sectorsize on 64K page size systems Qu Wenruo
2021-05-12 22:18 ` [Patch v2 00/42] btrfs: add data write support for subpage David Sterba
2021-05-12 23:48   ` Qu Wenruo
2021-05-13  2:21     ` Qu Wenruo
2021-05-13 22:54       ` David Sterba
2021-05-14  1:41         ` Qu Wenruo
2021-05-14  2:26           ` riteshh
2021-05-14 10:28             ` riteshh
2021-05-14 11:28               ` David Sterba
2021-05-14 14:38                 ` riteshh
2021-05-14 11:30       ` David Sterba
2021-05-14 22:25         ` David Sterba
2021-05-14 22:45         ` Qu Wenruo [this message]
2021-05-14 23:05           ` David Sterba
2021-05-14 23:17             ` Qu Wenruo
2021-05-17 13:22               ` David Sterba
2021-05-17 23:20                 ` Qu Wenruo

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=b2490ac7-7bb8-238c-1602-043bfcb09c8f@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=dsterba@suse.cz \
    --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 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).