- (args.buf + off);
-
- a1 = btrfs_stack_qgroup_limit_flags(limit);
- a2 = btrfs_stack_qgroup_limit_max_referenced
- (limit);
- a3 = btrfs_stack_qgroup_limit_max_exclusive
- (limit);
- a4 = btrfs_stack_qgroup_limit_rsv_referenced
- (limit);
- a5 = btrfs_stack_qgroup_limit_rsv_exclusive
- (limit);
- add_qgroup(qgroup_lookup,
- btrfs_search_header_offset(sh), 0,
- 0, 0, 0, 0, a1, a2, a3, a4, a5,
- NULL, NULL);
- } else if (btrfs_search_header_type(sh)
- == BTRFS_QGROUP_RELATION_KEY) {
- if (btrfs_search_header_offset(sh)
- < btrfs_search_header_objectid(sh))
- goto skip;
- bq = qgroup_tree_search(qgroup_lookup,
- btrfs_search_header_offset(sh));
- if (!bq)
- goto skip;
- bq1 = qgroup_tree_search(qgroup_lookup,
- btrfs_search_header_objectid(sh));
- if (!bq1)
- goto skip;
- add_qgroup(qgroup_lookup,
- btrfs_search_header_offset(sh), 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, bq, bq1);
- } else
- goto done;
-skip:
+ (args.buf + off);
+
+ 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)
+ break;
+
+ ret = update_qgroup_relation(qgroup_lookup,
+ qgroupid, qgroupid1);
+ break;
+ default:
+ return ret;
+ }
+
+ if (ret)
+ return ret;
+