2 * Copyright (C) 2012 STRATO. All rights reserved.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public
6 * License v2 as published by the Free Software Foundation.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
13 * You should have received a copy of the GNU General Public
14 * License along with this program; if not, write to the
15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16 * Boston, MA 021110-1307, USA.
19 #ifndef __BTRFS_QGROUP_H__
20 #define __BTRFS_QGROUP_H__
22 #include "kerncompat.h"
27 typedef int (*btrfs_qgroup_filter_func
)(struct btrfs_qgroup
*, u64
);
28 typedef int (*btrfs_qgroup_comp_func
)(struct btrfs_qgroup
*,
29 struct btrfs_qgroup
*, int);
32 struct btrfs_qgroup_filter
{
33 btrfs_qgroup_filter_func filter_func
;
37 struct btrfs_qgroup_comparer
{
38 btrfs_qgroup_comp_func comp_func
;
42 struct btrfs_qgroup_filter_set
{
45 struct btrfs_qgroup_filter filters
[0];
48 struct btrfs_qgroup_comparer_set
{
51 struct btrfs_qgroup_comparer comps
[0];
54 enum btrfs_qgroup_column_enum
{
55 BTRFS_QGROUP_QGROUPID
,
58 BTRFS_QGROUP_MAX_RFER
,
59 BTRFS_QGROUP_MAX_EXCL
,
65 enum btrfs_qgroup_comp_enum
{
66 BTRFS_QGROUP_COMP_QGROUPID
,
67 BTRFS_QGROUP_COMP_RFER
,
68 BTRFS_QGROUP_COMP_EXCL
,
69 BTRFS_QGROUP_COMP_MAX_RFER
,
70 BTRFS_QGROUP_COMP_MAX_EXCL
,
74 enum btrfs_qgroup_filter_enum
{
75 BTRFS_QGROUP_FILTER_PARENT
,
76 BTRFS_QGROUP_FILTER_ALL_PARENT
,
77 BTRFS_QGROUP_FILTER_MAX
,
80 int btrfs_qgroup_parse_sort_string(char *opt_arg
,
81 struct btrfs_qgroup_comparer_set
**comps
);
82 u64
btrfs_get_path_rootid(int fd
);
83 int btrfs_show_qgroups(int fd
, struct btrfs_qgroup_filter_set
*,
84 struct btrfs_qgroup_comparer_set
*);
85 void btrfs_qgroup_setup_print_column(enum btrfs_qgroup_column_enum column
);
86 void btrfs_qgroup_setup_units(unsigned unit_mode
);
87 struct btrfs_qgroup_filter_set
*btrfs_qgroup_alloc_filter_set(void);
88 void btrfs_qgroup_free_filter_set(struct btrfs_qgroup_filter_set
*filter_set
);
89 int btrfs_qgroup_setup_filter(struct btrfs_qgroup_filter_set
**filter_set
,
90 enum btrfs_qgroup_filter_enum
, u64 data
);
91 struct btrfs_qgroup_comparer_set
*btrfs_qgroup_alloc_comparer_set(void);
92 void btrfs_qgroup_free_comparer_set(struct btrfs_qgroup_comparer_set
*comp_set
);
93 int btrfs_qgroup_setup_comparer(struct btrfs_qgroup_comparer_set
**comp_set
,
94 enum btrfs_qgroup_comp_enum comparer
,
96 int qgroup_inherit_size(struct btrfs_qgroup_inherit
*p
);
97 int qgroup_inherit_add_group(struct btrfs_qgroup_inherit
**inherit
, char *arg
);
98 int qgroup_inherit_add_copy(struct btrfs_qgroup_inherit
**inherit
, char *arg
,