summaryrefslogtreecommitdiff
path: root/qgroup-verify.c
diff options
context:
space:
mode:
Diffstat (limited to 'qgroup-verify.c')
-rw-r--r--qgroup-verify.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/qgroup-verify.c b/qgroup-verify.c
index 1a0d38c3..6ca95eb8 100644
--- a/qgroup-verify.c
+++ b/qgroup-verify.c
@@ -711,8 +711,13 @@ static void read_qgroup_status(struct btrfs_path *path,
status_item = btrfs_item_ptr(path->nodes[0], path->slots[0],
struct btrfs_qgroup_status_item);
flags = btrfs_qgroup_status_flags(path->nodes[0], status_item);
- counts->qgroup_inconsist = flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT;
- counts->rescan_running = flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN;
+ /*
+ * Since qgroup_inconsist/rescan_running is just one bit,
+ * assign value directly won't work.
+ */
+ counts->qgroup_inconsist = !!(flags &
+ BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT);
+ counts->rescan_running = !!(flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN);
}
static int load_quota_info(struct btrfs_fs_info *info)
@@ -1095,6 +1100,19 @@ int report_qgroups(int all)
return ret;
}
+void free_qgroup_counts(void)
+{
+ struct rb_node *node;
+ struct qgroup_count *c;
+ node = rb_first(&counts.root);
+ while (node) {
+ c = rb_entry(node, struct qgroup_count, rb_node);
+ node = rb_next(node);
+ rb_erase(&c->rb_node, &counts.root);
+ free(c);
+ }
+}
+
int qgroup_verify_all(struct btrfs_fs_info *info)
{
int ret;