Go to file
Wang Shilong 1e174d2621 Btrfs-progs: restructure show_qgroups
The current show_qgroups() just shows a little information, and it is hard to
add some functions which the users need in the future, so i restructure it, make
it easy to add new functions.

In order to improve the scalability of show_qgroups(), i add some important
structures:

	struct qgroup_lookup {
		struct rb_root root;
	}
 	/*
	*store qgroup's information
	*/
	struct btrfs_qgroup {
		struct rb_node  rb_node;
		u64 qgroupid;

		u64 generation;
		u64 rfer;
		u64 rfer_cmpr;
		u64 excl_cmpr;

		u64 flags;
		u64 max_rfer;
		u64 max_excl;
		u64 rsv_rfer;
		u64 rsv_excl;

		struct list_head qgroups;
		struct list_head members;
	}
	/*
	*glue structure to represent the relations
	*between qgroups
	*/
	struct btrfs_qgroup_list {
		struct list_head next_qgroups;
		struct list_head next_member;
		struct btrfs_qgroup *qgroup;
		struct btrfs_qgroup *member;
	}
The above 3 structures are used to manage all the information
of qgroups.

	struct {
		char *name;
		char *column_name;
		int need_print;
	} btrfs_qgroup_columns[]

We define a arrary to manage all the columns that can be
outputed, and use a member variant(->need_print) to control
the output of the relative column. Some columns are outputed
by default. But we can change it according to the requirement
of the users.

For example:
	if outputing max referenced size of qgroup is needed,the function
'btrfs_qgroup_setup_column()' will be called, and the parameter 'BTRFS_QGROUP_MAX_RFER'
(extend in the future) will be passsed to the function. After the function is done,
when showing qgroups, max referenced size of qgroup will be output.

Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2013-10-16 08:23:12 -04:00
man btrfs-progs: Update manpages for btrfs defrag -r 2013-10-16 08:23:12 -04:00
tests Btrfs-progs: add a test image for the transid fixer in btrfsck 2013-10-16 08:23:12 -04:00
.gitignore btrfs-progs: get C=1 sparse checking working again 2013-09-03 19:41:12 +02:00
COPYING fix COPYING 2007-06-12 15:41:08 -04:00
INSTALL Removing btrfsctl, btrfs-vol, btrfs-show 2013-03-19 18:21:41 +01:00
Makefile Btrfs-progs: add make test framework 2013-10-16 08:23:11 -04:00
bcp Btrfs-progs: Correct path munging in bcp 2011-10-25 09:18:58 -04:00
bitops.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02:00
btrfs-calc-size.c Btrfs-progs: fix the min ticks check in print_seek_histogram 2013-10-16 08:23:11 -04:00
btrfs-convert.c Btrfs-progs: mkfs can now create fs with skinny extents 2013-09-03 19:41:13 +02:00
btrfs-corrupt-block.c Btrfs-progs: add ability to corrupt metadata block fields 2013-10-16 08:23:11 -04:00
btrfs-crc.c btrfs-progs: Fix getopt on arm/ppc platforms 2013-08-09 14:32:34 +02:00
btrfs-debug-tree.c btrfs-progs: drop unused parameter from btrfs_release_path 2013-09-03 19:40:46 +02:00
btrfs-find-root.c Btrfs-progs: pass flag to control whether run ioctl in btrfs_scan_for_fsid() 2013-10-16 08:22:26 -04:00
btrfs-fragments.c Btrfs-progs: fix closing of opendir() 2013-08-09 14:32:36 +02:00
btrfs-image.c btrfs-progs: drop unused parameter from btrfs_item_nr 2013-10-16 08:23:10 -04:00
btrfs-list.c btrfs-progs: btrfs_list_find_updated_files: Fix memory leak. 2013-10-16 08:23:12 -04:00
btrfs-list.h btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
btrfs-map-logical.c btrfs-progs: fix -Wmissing-noreturn 2013-10-16 08:20:43 -04:00
btrfs-select-super.c btrfs-progs: btrfs-select-super output is confusing when it fails 2013-04-23 18:56:20 +02:00
btrfs-show-super.c btrfs-progs: remove variable length stack arrays 2013-09-03 19:41:03 +02:00
btrfs-zero-log.c btrfs-progs: fix -Wmissing-noreturn 2013-10-16 08:20:43 -04:00
btrfs.c btrfs-progs: move chunk-recover to rescue group 2013-10-16 08:21:38 -04:00
btrfsck.h Btrfs-progs: Add chunk rebuild function for RAID1/SINGLE/DUP 2013-07-03 14:06:55 -04:00
btrfstune.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
chunk-recover.c btrfs-progs: Make btrfs_header_fsid() return unsigned long 2013-10-16 08:23:11 -04:00
cmds-balance.c Btrfs-progs: fix magic return value in cmds-balance.c 2013-10-16 08:20:43 -04:00
cmds-check.c Btrfs-progs: print out human readable errors for inodes and backrefs 2013-10-16 08:23:12 -04:00
cmds-chunk.c btrfs-progs: Make btrfs_header_fsid() return unsigned long 2013-10-16 08:23:11 -04:00
cmds-device.c btrfs-progs: device add should check existing FS before adding 2013-10-16 08:23:11 -04:00
cmds-filesystem.c btrfs-progs: Add recursive defrag using -r option 2013-10-16 08:23:11 -04:00
cmds-inspect.c btrfs-progs: look up the containing tree root id 2013-10-16 08:23:11 -04:00
cmds-qgroup.c Btrfs-progs: restructure show_qgroups 2013-10-16 08:23:12 -04:00
cmds-quota.c Btrfs-progs: fix magic return value in cmds-quota.c 2013-10-16 08:20:41 -04:00
cmds-receive.c Btrfs-progs: fix magic return value in cmds-receive.c 2013-10-16 08:20:41 -04:00
cmds-replace.c Btrfs-progs: fix magic return value in cmds-replace.c 2013-10-16 08:20:42 -04:00
cmds-rescue.c Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
cmds-restore.c btrfs-progs: drop unused parameter from btrfs_item_nr 2013-10-16 08:23:10 -04:00
cmds-scrub.c Btrfs-progs: fix magic return value in cmds-scrub.c 2013-10-16 08:20:42 -04:00
cmds-send.c Btrfs-progs: fix magic return value in cmds-send.c 2013-10-16 08:20:41 -04:00
cmds-subvolume.c btrfs-progs: cmd_find_new: Sync fs before searching for modified files. 2013-10-16 08:23:11 -04:00
commands.h Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
crc32c.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
crc32c.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
ctree.c Btrfs-progs: keep track of transid failures and fix them if possible 2013-10-16 08:23:12 -04:00
ctree.h Btrfs-progs: restructure show_qgroups 2013-10-16 08:23:12 -04:00
dir-item.c btrfs-progs: drop unused parameter from btrfs_item_nr 2013-10-16 08:23:10 -04:00
dir-test.c Btrfs-progs: fix magic return value in dir-test.c 2013-10-16 08:20:42 -04:00
disk-io.c Btrfs-progs: keep track of transid failures and fix them if possible 2013-10-16 08:23:12 -04:00
disk-io.h Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
extent-cache.c Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-cache.h Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-tree.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
extent_io.c Btrfs-progs: keep track of transid failures and fix them if possible 2013-10-16 08:23:12 -04:00
extent_io.h Btrfs-progs: keep track of transid failures and fix them if possible 2013-10-16 08:23:12 -04:00
file-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
free-space-cache.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
free-space-cache.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02:00
hash.h Switch btrfs_name_hash() to crc32c 2008-08-20 20:11:23 -04:00
hasher.c Unaligned access fixes 2008-02-15 11:19:58 -05:00
help.c Btrfs-progs: return 1 rather than 129 in usage() 2013-10-16 08:20:03 -04:00
inode-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
inode-map.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
ioctl-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
ioctl.h Btrfs-progs: fix typo in btrfs_err_str() 2013-10-16 08:20:42 -04:00
kerncompat.h btrfs-progs: get C=1 sparse checking working again 2013-09-03 19:41:12 +02:00
list.h Btrfs-progs: introduce list_{first, next}_entry/list_splice_tail{_init} 2013-07-03 14:06:55 -04:00
list_sort.c btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
list_sort.h btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
math.h Btrfs-progs: cleanup duplicated division functions 2013-08-09 14:32:28 +02:00
mkfs.c btrfs-progs: use better name for nodiscard variable and flip the logic 2013-10-16 08:20:43 -04:00
print-tree.c btrfs-progs: Make btrfs_header_fsid() return unsigned long 2013-10-16 08:23:11 -04:00
print-tree.h Btrfs: add btrfs-debug-tree -b <block number> to print a single block 2010-04-06 09:30:17 -04:00
qgroup.c Btrfs-progs: restructure show_qgroups 2013-10-16 08:23:12 -04:00
qgroup.h Btrfs-progs: restructure show_qgroups 2013-10-16 08:23:12 -04:00
quick-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
radix-tree.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
radix-tree.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
raid6.c btrfs-progs: give raid6.c its exported prototypes 2013-09-03 19:41:11 +02:00
random-test.c Btrfs-progs: fix magic return value in random-test.c 2013-10-16 08:20:42 -04:00
rbtree.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
rbtree.h Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.h Btrfsck: add the ability to prune corrupt extent allocation tree blocks 2012-02-21 14:37:21 -05:00
root-tree.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
send-stream.c Btrfs-progs: remove some unused code 2013-04-23 18:56:25 +02:00
send-stream.h Btrfs-progs: btrfs-receive optionally honors the end-cmd 2013-04-23 18:56:24 +02:00
send-test.c Btrfs-progs: fix magic return value in send-test.c 2013-10-16 08:20:42 -04:00
send-utils.c Btrfs-progs: use UUID tree for send/receive 2013-08-09 14:32:31 +02:00
send-utils.h Btrfs-progs: use UUID tree for send/receive 2013-08-09 14:32:31 +02:00
send.h btrfs-progs: make libbtrfs usable from C++ 2013-02-19 11:15:30 +01:00
show-blocks Fix showblocks to display different colors for different metadata roots 2009-03-09 13:00:44 -04:00
super-recover.c Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
transaction.h btrfs-progs: add malloc check in transaction.h/btrfs_start_transaction 2013-01-18 18:27:21 +01:00
utils.c btrfs-progs: create helper function to use lblkid to scan for btrfs disks 2013-10-16 08:23:11 -04:00
utils.h btrfs-progs: create helper function to use lblkid to scan for btrfs disks 2013-10-16 08:23:11 -04:00
uuid-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
version.sh btrfs-progs: remove leftovers from hg times 2013-10-16 08:23:11 -04:00
volumes.c btrfs-progs: calculate available blocks on device properly 2013-10-16 08:20:42 -04:00
volumes.h btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00