diff options
Diffstat (limited to 'qgroup-verify.c')
-rw-r--r-- | qgroup-verify.c | 22 |
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; |