btrfs-progs: Fix typos in docs and user-facing strings
[platform/upstream/btrfs-progs.git] / qgroup.c
index 156825f..11659e8 100644 (file)
--- 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;
 
@@ -1065,8 +1067,18 @@ static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup)
 
        while (1) {
                ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args);
-               if (ret < 0)
-                       return -errno;
+               if (ret < 0) {
+                       if (errno == ENOENT) {
+                               error("can't list qgroups: quotas not enabled");
+                               ret = -ENOTTY;
+                       } else {
+                               error("can't list qgroups: %s",
+                                      strerror(errno));
+                               ret = -errno;
+                       }
+
+                       break;
+               }
 
                /* the ioctl returns the number of item it found in nr_items */
                if (sk->nr_items == 0)
@@ -1082,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);
 
                        /*
@@ -1141,7 +1156,6 @@ skip:
                        break;
        }
 
-done:
        return ret;
 }
 
@@ -1178,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;
 }