X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=qgroup.c;h=11659e8394dda15fcfac2731de41b23bf7896ed5;hb=f44a0550123be92245943d832df64134c5fd6241;hp=23463d8a13fa67265c9b1e8853faddc480192e7a;hpb=f0445b8a344b496e6c070c733e445bf79a8fad58;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/qgroup.c b/qgroup.c index 23463d8..11659e8 100644 --- a/qgroup.c +++ b/qgroup.c @@ -1046,8 +1046,10 @@ static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup) struct btrfs_ioctl_search_header *sh; unsigned long off = 0; unsigned int i; + struct btrfs_qgroup_status_item *si; struct btrfs_qgroup_info_item *info; struct btrfs_qgroup_limit_item *limit; + u64 flags; u64 qgroupid; u64 qgroupid1; @@ -1092,44 +1094,47 @@ static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup) off); off += sizeof(*sh); - if (btrfs_search_header_type(sh) - == BTRFS_QGROUP_STATUS_KEY) { - struct btrfs_qgroup_status_item *si; - u64 flags; - + switch (btrfs_search_header_type(sh)) { + case BTRFS_QGROUP_STATUS_KEY: si = (struct btrfs_qgroup_status_item *) (args.buf + off); flags = btrfs_stack_qgroup_status_flags(si); + print_status_flag_warning(flags); - } else if (btrfs_search_header_type(sh) - == BTRFS_QGROUP_INFO_KEY) { + break; + case BTRFS_QGROUP_INFO_KEY: qgroupid = btrfs_search_header_offset(sh); info = (struct btrfs_qgroup_info_item *) (args.buf + off); - update_qgroup_info(qgroup_lookup, qgroupid, - info); - } else if (btrfs_search_header_type(sh) - == BTRFS_QGROUP_LIMIT_KEY) { + ret = update_qgroup_info(qgroup_lookup, + qgroupid, info); + break; + case BTRFS_QGROUP_LIMIT_KEY: qgroupid = btrfs_search_header_offset(sh); limit = (struct btrfs_qgroup_limit_item *) (args.buf + off); - update_qgroup_limit(qgroup_lookup, qgroupid, - limit); - } else if (btrfs_search_header_type(sh) - == BTRFS_QGROUP_RELATION_KEY) { + ret = update_qgroup_limit(qgroup_lookup, + qgroupid, limit); + break; + case BTRFS_QGROUP_RELATION_KEY: qgroupid = btrfs_search_header_offset(sh); qgroupid1 = btrfs_search_header_objectid(sh); if (qgroupid < qgroupid1) - goto skip; + break; + + ret = update_qgroup_relation(qgroup_lookup, + qgroupid, qgroupid1); + break; + default: + return ret; + } + + if (ret) + return ret; - update_qgroup_relation(qgroup_lookup, qgroupid, - qgroupid1); - } else - goto done; -skip: off += btrfs_search_header_len(sh); /* @@ -1151,7 +1156,6 @@ skip: break; } -done: return ret; } @@ -1188,8 +1192,6 @@ int btrfs_show_qgroups(int fd, print_all_qgroups(&sort_tree); __free_all_qgroups(&qgroup_lookup); - free(filter_set); - free(comp_set); return ret; }