From 752d6256e5204b958b0ef7905675a940b5e9172f Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 12 May 2022 16:42:50 +0300 Subject: gentoo resync : 12.05.2022 --- .../files/5.15-filesystem-usage-chunks.patch | 94 ---------------------- 1 file changed, 94 deletions(-) delete mode 100644 sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch (limited to 'sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch') diff --git a/sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch b/sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch deleted file mode 100644 index be58afc8712c..000000000000 --- a/sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch +++ /dev/null @@ -1,94 +0,0 @@ -From: Nikolay Borisov -To: linux-btrfs@vger.kernel.org -Cc: Nikolay Borisov -Subject: [PATCH] Fix calculation of chunk size for RAID1/DUP profiles -Date: Tue, 16 Nov 2021 16:02:06 +0200 -Message-Id: <20211116140206.291252-1-nborisov@suse.com> -List-ID: - -Current formula calculates the stripe size, however that's not what we want -in the case of RAID1/DUP profiles. In those cases since chunkc are mirrored -across devices we want the full size of the chunk. Without this patch the -'btrfs fi usage' output from an fs which is using RAID1 is: - - - - Data,RAID1: Size:2.00GiB, Used:1.00GiB (50.03%) - /dev/vdc 1.00GiB - /dev/vdf 1.00GiB - - Metadata,RAID1: Size:256.00MiB, Used:1.34MiB (0.52%) - /dev/vdc 128.00MiB - /dev/vdf 128.00MiB - - System,RAID1: Size:8.00MiB, Used:16.00KiB (0.20%) - /dev/vdc 4.00MiB - /dev/vdf 4.00MiB - - Unallocated: - /dev/vdc 8.87GiB - /dev/vdf 8.87GiB - - -So a 2 gigabyte RAID1 chunk actually will take up 4 gigabytes on the actual disks -2 each. In this case this is being miscalculated as taking up 1gb on each device. - -This also leads to erroneously calculated unallocated space. The correct output -in this case is: - - - - Data,RAID1: Size:2.00GiB, Used:1.00GiB (50.03%) - /dev/vdc 2.00GiB - /dev/vdf 2.00GiB - - Metadata,RAID1: Size:256.00MiB, Used:1.34MiB (0.52%) - /dev/vdc 256.00MiB - /dev/vdf 256.00MiB - - System,RAID1: Size:8.00MiB, Used:16.00KiB (0.20%) - /dev/vdc 8.00MiB - /dev/vdf 8.00MiB - - Unallocated: - /dev/vdc 7.74GiB - /dev/vdf 7.74GiB - - -Fix it by only utilising the chunk formula for profiles which are not RAID1/DUP. - -Signed-off-by: Nikolay Borisov ---- - cmds/filesystem-usage.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -diff --git a/cmds/filesystem-usage.c b/cmds/filesystem-usage.c -index 6195f633da44..5f2289a9b40d 100644 ---- a/cmds/filesystem-usage.c -+++ b/cmds/filesystem-usage.c -@@ -805,11 +805,17 @@ int load_chunk_and_device_info(int fd, struct chunk_info **chunkinfo, - */ - static u64 calc_chunk_size(struct chunk_info *ci) - { -- u32 div; -+ u32 div = 1; - -- /* No parity + sub_stripes, so order of "-" and "/" does not matter */ -- div = (ci->num_stripes - btrfs_bg_type_to_nparity(ci->type)) / -- btrfs_bg_type_to_sub_stripes(ci->type); -+ /* -+ * The formula doesn't work for RAID1/DUP types, we should just return the -+ * chunk size -+ */ -+ if (!(ci->type & (BTRFS_BLOCK_GROUP_RAID1_MASK|BTRFS_BLOCK_GROUP_DUP))) { -+ /* No parity + sub_stripes, so order of "-" and "/" does not matter */ -+ div = (ci->num_stripes - btrfs_bg_type_to_nparity(ci->type)) / -+ btrfs_bg_type_to_sub_stripes(ci->type); -+ } - - return ci->size / div; - } --- -2.17.1 - - -- cgit v1.2.3