diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-05-12 16:42:50 +0300 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-05-12 16:42:50 +0300 |
commit | 752d6256e5204b958b0ef7905675a940b5e9172f (patch) | |
tree | 330d16e6362a49cbed8875a777fe641a43376cd3 /sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch | |
parent | 0c100b7dd2b30e75b799d806df4ef899fd98e1ea (diff) |
gentoo resync : 12.05.2022
Diffstat (limited to 'sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch')
-rw-r--r-- | sys-fs/btrfs-progs/files/5.15-filesystem-usage-chunks.patch | 94 |
1 files changed, 0 insertions, 94 deletions
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 <nborisov@suse.com> -To: linux-btrfs@vger.kernel.org -Cc: Nikolay Borisov <nborisov@suse.com> -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: <linux-btrfs.vger.kernel.org> - -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: - - <snip> - - 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: - - <snip> - - 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 <nborisov@suse.com> ---- - 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 - - |