mbox series

[STABLE,5.15,0/2] btrfs: raid56: backports to reduce corruption

Message ID cover.1660898037.git.wqu@suse.com (mailing list archive)
Headers show
Series btrfs: raid56: backports to reduce corruption | expand

Message

Qu Wenruo Aug. 19, 2022, 8:39 a.m. UTC
This is the backport for v5.15.x stable branch.

The full explananation can be found here:
https://lore.kernel.org/linux-btrfs/Yv85PTBsDhrQITZp@kroah.com/T/#t

Difference between v5.15.x and v5.18.x backports:

- btrfs_io_contrl::fs_info and btrfs_raid_bio::fs_info refactor
  In v5.15 and older kernel, btrfs_raid_bio and btrfs_io_control both
  have fs_info member, and the new rbio_add_bio() function utilizes
  btrfs_io_ctrl::fs_info.

  Unfortunately that rbio->bioc->fs_info is not always initialized in
  v5.15 and older kernels.
  Thus has to use rbio->fs_info instead.

  If not properly handled, can lead to btrfs/158 crash.

Qu Wenruo (2):
  btrfs: only write the sectors in the vertical stripe which has data
    stripes
  btrfs: raid56: don't trust any cached sector in
    __raid56_parity_recover()

 fs/btrfs/raid56.c | 74 ++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 57 insertions(+), 17 deletions(-)

Comments

Greg KH Aug. 19, 2022, 11:21 a.m. UTC | #1
On Fri, Aug 19, 2022 at 04:39:48PM +0800, Qu Wenruo wrote:
> This is the backport for v5.15.x stable branch.
> 
> The full explananation can be found here:
> https://lore.kernel.org/linux-btrfs/Yv85PTBsDhrQITZp@kroah.com/T/#t
> 
> Difference between v5.15.x and v5.18.x backports:
> 
> - btrfs_io_contrl::fs_info and btrfs_raid_bio::fs_info refactor
>   In v5.15 and older kernel, btrfs_raid_bio and btrfs_io_control both
>   have fs_info member, and the new rbio_add_bio() function utilizes
>   btrfs_io_ctrl::fs_info.
> 
>   Unfortunately that rbio->bioc->fs_info is not always initialized in
>   v5.15 and older kernels.
>   Thus has to use rbio->fs_info instead.
> 
>   If not properly handled, can lead to btrfs/158 crash.
> 
> Qu Wenruo (2):
>   btrfs: only write the sectors in the vertical stripe which has data
>     stripes
>   btrfs: raid56: don't trust any cached sector in
>     __raid56_parity_recover()
> 
>  fs/btrfs/raid56.c | 74 ++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 57 insertions(+), 17 deletions(-)
> 
> -- 
> 2.37.1
> 

All now queued up, thanks.

greg k-h