Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
btrfsprogs.356
0160-btrfs-progs-fix-wrong-data-ratio-for-raid5...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0160-btrfs-progs-fix-wrong-data-ratio-for-raid56-in-btrfs.patch of Package btrfsprogs.356
From b2784b0fa15049608b128f42a3c56303e53dff84 Mon Sep 17 00:00:00 2001 From: Gui Hecheng <guihc.fnst@cn.fujitsu.com> Date: Thu, 24 Jul 2014 11:21:52 +0800 Subject: [PATCH 160/303] btrfs-progs: fix wrong data ratio for raid56 in btrfs-file-usage When run btrfs-file-usage on a btrfs with data profile raid5/6, the output message for "Free" & "Data to device ratio" seems wrong as follows: ... Device size: 100.00GiB Device allocated: 2.04GiB Device unallocated: 97.96GiB Used: 1.12MiB Free (Estimated): 197.89GiB <== Free > Device size Data to device ratio: 198 % <== > 100% Global reserve: 0.00B ... It is because the function get_raid56_used() is not iterating the chunk_info array correctly, it is just repeating adding the first chunk_info statistics. Just add a ptr to iterate over the array. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz> --- cmds-fi-disk_usage.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cmds-fi-disk_usage.c b/cmds-fi-disk_usage.c index eb645128b142..98b6d7fcd409 100644 --- a/cmds-fi-disk_usage.c +++ b/cmds-fi-disk_usage.c @@ -293,14 +293,16 @@ static struct btrfs_ioctl_space_args *load_space_info(int fd, char *path) static void get_raid56_used(int fd, struct chunk_info *chunks, int chunkcount, u64 *raid5_used, u64 *raid6_used) { + struct chunk_info *info_ptr = chunks; *raid5_used = 0; *raid6_used = 0; while (chunkcount-- > 0) { - if (chunks->type & BTRFS_BLOCK_GROUP_RAID5) - (*raid5_used) += chunks->size / (chunks->num_stripes - 1); - if (chunks->type & BTRFS_BLOCK_GROUP_RAID6) - (*raid6_used) += chunks->size / (chunks->num_stripes - 2); + if (info_ptr->type & BTRFS_BLOCK_GROUP_RAID5) + (*raid5_used) += info_ptr->size / (info_ptr->num_stripes - 1); + if (info_ptr->type & BTRFS_BLOCK_GROUP_RAID6) + (*raid6_used) += info_ptr->size / (info_ptr->num_stripes - 2); + info_ptr++; } } -- 2.1.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor