X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=qgroup.c;h=071d15edb51116286f00a16615d7d23b39d51e4f;hb=fc4a8280611f4da6fc73f14468465d67807f9e7c;hp=20cf1ea6cc3149bd76e00b21654113513da15473;hpb=c027c1353145f521999963c218682c42475cd97a;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/qgroup.c b/qgroup.c index 20cf1ea..071d15e 100644 --- a/qgroup.c +++ b/qgroup.c @@ -439,7 +439,7 @@ struct btrfs_qgroup_comparer_set *btrfs_qgroup_alloc_comparer_set(void) sizeof(struct btrfs_qgroup_comparer); set = calloc(1, size); if (!set) { - fprintf(stderr, "memory allocation failed\n"); + error("memory allocation failed"); exit(1); } @@ -468,7 +468,7 @@ int btrfs_qgroup_setup_comparer(struct btrfs_qgroup_comparer_set **comp_set, tmp = set; set = realloc(set, size); if (!set) { - fprintf(stderr, "memory allocation failed\n"); + error("memory allocation failed"); free(tmp); exit(1); } @@ -480,7 +480,7 @@ int btrfs_qgroup_setup_comparer(struct btrfs_qgroup_comparer_set **comp_set, *comp_set = set; } - ASSERT(set->comps[set->ncomps].comp_func != NULL); + ASSERT(set->comps[set->ncomps].comp_func == NULL); set->comps[set->ncomps].comp_func = all_comp_funcs[comparer]; set->comps[set->ncomps].is_descending = is_descending; @@ -612,7 +612,7 @@ static int update_qgroup(struct qgroup_lookup *qgroup_lookup, u64 qgroupid, if (pa && child) { list = malloc(sizeof(*list)); if (!list) { - fprintf(stderr, "memory allocation failed\n"); + error("memory allocation failed"); exit(1); } list->qgroup = pa; @@ -641,7 +641,7 @@ static int add_qgroup(struct qgroup_lookup *qgroup_lookup, u64 qgroupid, bq = calloc(1, sizeof(*bq)); if (!bq) { - printf("memory allocation failed\n"); + error("memory allocation failed"); exit(1); } if (qgroupid) { @@ -670,7 +670,7 @@ static int add_qgroup(struct qgroup_lookup *qgroup_lookup, u64 qgroupid, if (parent && child) { list = malloc(sizeof(*list)); if (!list) { - fprintf(stderr, "memory allocation failed\n"); + error("memory allocation failed"); exit(1); } list->qgroup = parent; @@ -680,8 +680,8 @@ static int add_qgroup(struct qgroup_lookup *qgroup_lookup, u64 qgroupid, } ret = qgroup_tree_insert(qgroup_lookup, bq); if (ret) { - printf("failed to insert tree %llu\n", - bq->qgroupid); + error("failed to insert %llu into tree: %s", + (unsigned long long)bq->qgroupid, strerror(-ret)); exit(1); } return ret; @@ -809,7 +809,7 @@ struct btrfs_qgroup_filter_set *btrfs_qgroup_alloc_filter_set(void) sizeof(struct btrfs_qgroup_filter); set = calloc(1, size); if (!set) { - fprintf(stderr, "memory allocation failed\n"); + error("memory allocation failed"); exit(1); } set->total = BTRFS_QGROUP_NFILTERS_INCREASE; @@ -836,7 +836,7 @@ int btrfs_qgroup_setup_filter(struct btrfs_qgroup_filter_set **filter_set, tmp = set; set = realloc(set, size); if (!set) { - fprintf(stderr, "memory allocation failed\n"); + error("memory allocation failed"); free(tmp); exit(1); } @@ -847,7 +847,7 @@ int btrfs_qgroup_setup_filter(struct btrfs_qgroup_filter_set **filter_set, *filter_set = set; } - ASSERT(set->filters[set->nfilters].filter_func != NULL); + ASSERT(set->filters[set->nfilters].filter_func == NULL); set->filters[set->nfilters].filter_func = all_filter_funcs[filter]; set->filters[set->nfilters].data = data; set->nfilters++; @@ -1025,14 +1025,11 @@ static void __filter_and_sort_qgroups(struct qgroup_lookup *all_qgroups, static inline void print_status_flag_warning(u64 flags) { if (!(flags & BTRFS_QGROUP_STATUS_FLAG_ON)) - fprintf(stderr, - "WARNING: Quota disabled, qgroup data may be out of date\n"); + warning("quota disabled, qgroup data may be out of date"); else if (flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN) - fprintf(stderr, - "WARNING: Rescan is running, qgroup data may be incorrect\n"); + warning("rescan is running, qgroup data may be incorrect"); else if (flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT) - fprintf(stderr, - "WARNING: Qgroup data inconsistent, rescan recommended\n"); + warning("qgroup data inconsistent, rescan recommended"); } static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup) @@ -1068,9 +1065,8 @@ static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup) while (1) { ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); if (ret < 0) { - fprintf(stderr, - "ERROR: can't perform the search - %s\n", - strerror(errno)); + error("cannot perform the search: %s", + strerror(errno)); return ret; } /* the ioctl returns the number of item it found in nr_items */ @@ -1213,25 +1209,7 @@ int btrfs_show_qgroups(int fd, return ret; } -u64 btrfs_get_path_rootid(int fd) -{ - int ret; - struct btrfs_ioctl_ino_lookup_args args; - - memset(&args, 0, sizeof(args)); - args.objectid = BTRFS_FIRST_FREE_OBJECTID; - - ret = ioctl(fd, BTRFS_IOC_INO_LOOKUP, &args); - if (ret < 0) { - fprintf(stderr, - "ERROR: can't perform the search - %s\n", - strerror(errno)); - return ret; - } - return args.treeid; -} - -int btrfs_qgroup_parse_sort_string(char *opt_arg, +int btrfs_qgroup_parse_sort_string(const char *opt_arg, struct btrfs_qgroup_comparer_set **comps) { int order; @@ -1239,8 +1217,14 @@ int btrfs_qgroup_parse_sort_string(char *opt_arg, char *p; char **ptr_argv; int what_to_sort; + char *opt_tmp; + int ret = 0; - while ((p = strtok(opt_arg, ",")) != NULL) { + opt_tmp = strdup(opt_arg); + if (!opt_tmp) + return -ENOMEM; + + while ((p = strtok(opt_tmp, ",")) != NULL) { flag = 0; ptr_argv = all_sort_items; @@ -1260,10 +1244,10 @@ int btrfs_qgroup_parse_sort_string(char *opt_arg, ptr_argv++; } - if (flag == 0) - return -1; - - else { + if (flag == 0) { + ret = -1; + goto out; + } else { if (*p == '+') { order = 0; p++; @@ -1274,14 +1258,19 @@ int btrfs_qgroup_parse_sort_string(char *opt_arg, order = 0; what_to_sort = btrfs_qgroup_get_sort_item(p); - if (what_to_sort < 0) - return -1; + if (what_to_sort < 0) { + ret = -1; + goto out; + } btrfs_qgroup_setup_comparer(comps, what_to_sort, order); } - opt_arg = NULL; + free(opt_tmp); + opt_tmp = NULL; } - return 0; +out: + free(opt_tmp); + return ret; } int qgroup_inherit_size(struct btrfs_qgroup_inherit *p) @@ -1305,7 +1294,7 @@ qgroup_inherit_realloc(struct btrfs_qgroup_inherit **inherit, int n, int pos) out = calloc(sizeof(*out) + sizeof(out->qgroups[0]) * (nitems + n), 1); if (out == NULL) { - fprintf(stderr, "ERROR: Not enough memory\n"); + error("not enough memory"); return -ENOMEM; } @@ -1333,7 +1322,7 @@ int qgroup_inherit_add_group(struct btrfs_qgroup_inherit **inherit, char *arg) int pos = 0; if (qgroupid == 0) { - fprintf(stderr, "ERROR: bad qgroup specification\n"); + error("invalid qgroup specification, qgroupid must not 0"); return -EINVAL; } @@ -1360,7 +1349,7 @@ int qgroup_inherit_add_copy(struct btrfs_qgroup_inherit **inherit, char *arg, p = strchr(arg, ':'); if (!p) { bad: - fprintf(stderr, "ERROR: bad copy specification\n"); + error("invalid copy specification, missing separator :"); return -EINVAL; } *p = 0;