Skip to contentSkip to conversation

FAILED: patch "[PATCH] btrfs: zoned: clear data relocation bg on zone finish" failed to apply to 5.15-stable tree

PATCH [email protected] 2 participants 4 messages Dec 12, 2021 – Dec 13, 2021

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 5911f5382022aff2b817cb88f276756af229664d Mon Sep 17 00:00:00 2001
From: Johannes Thumshirn <[email protected]>
Date: Thu, 2 Dec 2021 00:47:14 -0800
Subject: [PATCH] btrfs: zoned: clear data relocation bg on zone finish

When finishing a zone that is used by a dedicated data relocation block group, also remove its reference from fs_info, so we're not trying to use a full block group for allocations during data relocation, which will always fail.

The result is we're not making any forward progress and end up in a deadlock situation.

Fixes c2707a255623 ("btrfs: zoned: add a dedicated data relocation block group")
fs/btrfs/zoned.c +2 -0
index 67d932d70798..678a29469511 100644
@@ -1860,6 +1860,7 @@ int btrfs_zone_finish(struct btrfs_block_group *block_group)
 	block_group->alloc_offset = block_group->zone_capacity;
 	block_group->free_space_ctl->free_space = 0;
 	btrfs_clear_treelog_bg(block_group);
+	btrfs_clear_data_reloc_bg(block_group);
 	spin_unlock(&block_group->lock);
 
 	ret = blkdev_zone_mgmt(device->bdev, REQ_OP_ZONE_FINISH,
@@ -1942,6 +1943,7 @@ void btrfs_zone_finish_endio(struct btrfs_fs_info *fs_info, u64 logical, u64 len
 	ASSERT(block_group->alloc_offset == block_group->zone_capacity);
 	ASSERT(block_group->free_space_ctl->free_space == 0);
 	btrfs_clear_treelog_bg(block_group);
+	btrfs_clear_data_reloc_bg(block_group);
 	spin_unlock(&block_group->lock);
 
 	map = block_group->physical_map;
#1 lore raw
Quoted 6 lines · On 12/12/2021 15:21, [email protected] wrote:

The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Hi Greg,

this patch doesn't need any backporting to stable. The failure can only happen on v5.16-rcX.

Thanks,
Johannes

author maintainer
#2 lore raw
Quoted 8 lines · Johannes Thumshirn
Quoted 6 lines · On 12/12/2021 15:21, [email protected] wrote:

The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Quoted 4 lines

Hi Greg,

this patch doesn't need any backporting to stable. The failure can only happen on v5.16-rcX.

Really? The Fixes: tag says otherwise:

Fixes c2707a255623 ("btrfs: zoned: add a dedicated data relocation block group")

as that commit id is in 5.15.4.

Perhaps that tag is incorrect?

thanks,

greg k-h

#3 lore raw
Quoted 11 lines · On 13/12/2021 09:22, [email protected] wrote:
Quoted 10 lines · Johannes Thumshirn
Quoted 6 lines · On 12/12/2021 15:21, [email protected] wrote:

The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Hi Greg,

Quoted 9 lines
Quoted 2 lines

this patch doesn't need any backporting to stable. The failure can only happen on v5.16-rcX.

Really? The Fixes: tag says otherwise:

Fixes c2707a255623 ("btrfs: zoned: add a dedicated data relocation block group")

as that commit id is in 5.15.4.

Perhaps that tag is incorrect?

Nope, but 5.15.4 does not contain the functions where we forgot to add the calls to btrfs_clear_data_reloc_bg().

The bug was a race between me and Naohiro working on c2707a255623 and afba2bc036b0e ("btrfs: zoned: implement active zone tracking").

Thanks,
Johannes