mbox series

[GIT,PULL] Btrfs fixes for 5.5-rc5

Message ID cover.1578072747.git.dsterba@suse.com (mailing list archive)
State New, archived
Headers show
Series [GIT,PULL] Btrfs fixes for 5.5-rc5 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-5.5-rc4-tag

Message

David Sterba Jan. 3, 2020, 5:43 p.m. UTC
Hi,

a few fixes for btrfs:

* blkcg accounting problem with compression that could stall writes

* setting up blkcg bio for compression crashes due to NULL bdev pointer

* fix possible infinite loop in writeback for nocow files (here possible
  means almost impossible, 13 things that need to happen to trigger it)

Please pull, thanks.

----------------------------------------------------------------
The following changes since commit fbd542971aa1e9ec33212afe1d9b4f1106cd85a1:

  btrfs: send: remove WARN_ON for readonly mount (2019-12-13 14:10:46 +0100)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-5.5-rc4-tag

for you to fetch changes up to de7999afedff02c6631feab3ea726a0e8f8c3d40:

  Btrfs: fix infinite loop during nocow writeback due to race (2019-12-30 16:13:20 +0100)

----------------------------------------------------------------
Dennis Zhou (2):
      btrfs: punt all bios created in btrfs_submit_compressed_write()
      btrfs: fix compressed write bio blkcg attribution

Filipe Manana (1):
      Btrfs: fix infinite loop during nocow writeback due to race

 fs/btrfs/compression.c | 7 ++++++-
 fs/btrfs/inode.c       | 6 +++---
 2 files changed, 9 insertions(+), 4 deletions(-)

Comments

pr-tracker-bot@kernel.org Jan. 3, 2020, 8:40 p.m. UTC | #1
The pull request you sent on Fri,  3 Jan 2020 18:43:16 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-5.5-rc4-tag

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/3a562aee727a7bfbb3a37b1aa934118397dad701

Thank you!
Filipe Manana Jan. 4, 2020, 12:32 p.m. UTC | #2
On Fri, Jan 3, 2020 at 5:44 PM David Sterba <dsterba@suse.com> wrote:
>
> Hi,
>
> a few fixes for btrfs:
>
> * blkcg accounting problem with compression that could stall writes
>
> * setting up blkcg bio for compression crashes due to NULL bdev pointer
>
> * fix possible infinite loop in writeback for nocow files (here possible
>   means almost impossible, 13 things that need to happen to trigger it)

Some corrections regarding this last bullet point.

The issue is not about nocow files. It's about writes into
preallocated extents (allocated through plain fallocate() or
fallocate's zero range),
which triggers nocow writeback.

Secondly, the "13 things that need to happen to trigger it" is confusing.
The changelog has 13 bullet points that describe the race that
triggers the problem, they are not steps that need to happen.
The conditions necessary to trigger it are far less than 13.

The first paragraph of the changelog summarizes when the problem can happen:

"When starting writeback for a range that covers part of a preallocated
extent, due to a race with writeback for another range that also covers
another part of the same preallocated extent, we can end up in an infinite
loop."

And the issue is far from almost impossible or theoretical.
Long runs of fsx (1 million operations or more), such as the one from
the test case generic/522 from fstests, can trigger it sporadically (I
could trigger it a few times per week).

Thanks.


>
> Please pull, thanks.
>
> ----------------------------------------------------------------
> The following changes since commit fbd542971aa1e9ec33212afe1d9b4f1106cd85a1:
>
>   btrfs: send: remove WARN_ON for readonly mount (2019-12-13 14:10:46 +0100)
>
> are available in the Git repository at:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-5.5-rc4-tag
>
> for you to fetch changes up to de7999afedff02c6631feab3ea726a0e8f8c3d40:
>
>   Btrfs: fix infinite loop during nocow writeback due to race (2019-12-30 16:13:20 +0100)
>
> ----------------------------------------------------------------
> Dennis Zhou (2):
>       btrfs: punt all bios created in btrfs_submit_compressed_write()
>       btrfs: fix compressed write bio blkcg attribution
>
> Filipe Manana (1):
>       Btrfs: fix infinite loop during nocow writeback due to race
>
>  fs/btrfs/compression.c | 7 ++++++-
>  fs/btrfs/inode.c       | 6 +++---
>  2 files changed, 9 insertions(+), 4 deletions(-)