btrfs-progs/cmds
Nikolay Borisov 1b194bb620 btrfs-progs: fi usage: fix calculation of chunk size for RAID1/DUP profiles
Current formula calculates the stripe size, however that's not what we
want in the case of RAID1/DUP profiles. In those cases since chunk 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 1GiB 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.

Issue: #422
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-11-18 10:17:33 +01:00
..
balance.c btrfs-progs: factor out profile parsing to common utils 2021-09-07 13:58:44 +02:00
commands.h btrfs-progs: split subvolume list to its own file 2021-10-08 20:47:03 +02:00
device.c btrfs-progs: device remove: add support for cancel 2021-05-20 22:14:18 +02:00
filesystem-du.c btrfs-progs: split unit related helpers from utils.c 2021-05-06 16:41:47 +02:00
filesystem-usage.c btrfs-progs: fi usage: fix calculation of chunk size for RAID1/DUP profiles 2021-11-18 10:17:33 +01:00
filesystem-usage.h btrfs-progs: move all cmds-fi*.c to cmds/ 2019-07-03 20:49:03 +02:00
filesystem.c btrfs-progs: fix comments in cmd_filesystem_show 2021-10-06 16:50:46 +02:00
inspect-dump-super.c btrfs-progs: remove temporary buffer for super block 2021-11-05 12:50:03 +01:00
inspect-dump-tree.c btrfs-progs: dump-tree: add options to dump checksums 2021-06-19 22:07:49 +02:00
inspect-tree-stats.c btrfs-progs: switch %Lu to %llu format 2021-06-19 22:07:49 +02:00
inspect.c btrfs-progs: use btrfs_subvolid_resolve instead of btrfs_list_path_for_root 2021-10-08 20:47:03 +02:00
property.c btrfs-progs: prop set: ro->rw and received_uuid 2021-10-07 18:40:26 +02:00
props.h btrfs-progs: prop set: add force parameter 2021-10-07 18:40:24 +02:00
qgroup.c btrfs-progs: move all private definitions to cmds/qgroup.c 2021-09-07 19:21:14 +02:00
qgroup.h btrfs-progs: move all private definitions to cmds/qgroup.c 2021-09-07 19:21:14 +02:00
quota.c btrfs-progs: split open/close helpers from utils.c 2021-05-06 16:41:47 +02:00
receive-dump.c btrfs-progs: remove unused prototypes from send-utils.h 2021-10-08 20:47:04 +02:00
receive-dump.h btrfs-progs: unify GPL header comments 2021-09-07 13:58:44 +02:00
receive.c btrfs-progs: simplify struct subvol_uuid_search use 2021-10-08 20:47:04 +02:00
replace.c btrfs-progs: replace start: add option -K/--nodiscard 2021-10-06 16:49:35 +02:00
rescue-chunk-recover.c btrfs-progs: cache csum_size and csum_type in btrfs_fs_info 2021-11-05 12:50:03 +01:00
rescue-super-recover.c btrfs-progs: remove temporary buffer for super block 2021-11-05 12:50:03 +01:00
rescue.c btrfs-progs: split open/close helpers from utils.c 2021-05-06 16:41:47 +02:00
rescue.h btrfs-progs: unify GPL header comments 2021-09-07 13:58:44 +02:00
restore.c btrfs-progs: introduce OPEN_CTREE_ALLOW_TRANSID_MISMATCH flag 2021-09-20 12:17:29 +02:00
scrub.c btrfs-progs: split unit related helpers from utils.c 2021-05-06 16:41:47 +02:00
send.c btrfs-progs: simplify struct subvol_uuid_search use 2021-10-08 20:47:04 +02:00
subvolume-list.c btrfs-progs: subvol list: open code list_subvol_fill_paths in its caller 2021-10-08 20:47:04 +02:00
subvolume.c btrfs-progs: fix read-write subvol and received_uuid flags check 2021-11-04 20:56:42 +01:00