Hi Greg and stable team,
Here's a backport of relocation fixes that went into 5.16 aimed at the 5.15.x series of stable kernels. It's a problem people are currently running into when using btrfs on a zoned block device.
The following patches have been backported: 960a3166aed0 ("btrfs: zoned: allow preallocation for relocation inodes") 2adada886b26 ("btrfs: check for relocation inodes on zoned btrfs in should_nocow") e6d261e3b1f7 ("btrfs: zoned: use regular writes for relocation") 35156d852762 ("btrfs: zoned: only allow one process to add pages to a relocation inode") c2707a255623 ("btrfs: zoned: add a dedicated data relocation block group") 37f00a6d2e9c ("btrfs: introduce btrfs_is_data_reloc_root")
The backport has seen the usual regression testing with xfstests.
Johannes Thumshirn (6): btrfs: introduce btrfs_is_data_reloc_root btrfs: zoned: add a dedicated data relocation block group btrfs: zoned: only allow one process to add pages to a relocation inode btrfs: zoned: use regular writes for relocation btrfs: check for relocation inodes on zoned btrfs in should_nocow btrfs: zoned: allow preallocation for relocation inodes
fs/btrfs/block-group.c | 1 + fs/btrfs/ctree.h | 12 +++++++++ fs/btrfs/disk-io.c | 3 ++- fs/btrfs/extent-tree.c | 56 +++++++++++++++++++++++++++++++++++++++--- fs/btrfs/extent_io.c | 11 +++++++++ fs/btrfs/inode.c | 29 +++++++++++++--------- fs/btrfs/relocation.c | 38 +++------------------------- fs/btrfs/zoned.c | 21 ++++++++++++++++ fs/btrfs/zoned.h | 3 +++ 9 files changed, 123 insertions(+), 51 deletions(-)