summaryrefslogtreecommitdiff
path: root/qgroup.c
diff options
context:
space:
mode:
authorLu Fengqi <lufq.fnst@cn.fujitsu.com>2018-05-08 13:48:02 +0800
committerDavid Sterba <dsterba@suse.com>2018-06-07 16:37:33 +0200
commit8eb7e9d43aa96d599a264db748043fa9b9a16f30 (patch)
tree736ff163422c3ec120b494bb7a4928ddeaa287e4 /qgroup.c
parent0ef679720532fe97588c9d77f5a5f981b0150fe3 (diff)
btrfs-progs: qgroup: swap the argument in the caller of update_qgroup_relation
The QGROUP_RELATION item is very special, it always exists in pairs (with objectid and offset exchanged). Its objectid and offset are the ids of a pair of parent and child qgroups, respectively. The larger one is parent and the smaller one is child. After the following commit, the order of the parameters is wrong and causes qgroup show to output the wrong qgroup parent-child relationship. Fixes: aaf2dac5ef37 ("btrfs-progs: qgroup: split update_qgroup to reduce arguments") Issue: #129 Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'qgroup.c')
-rw-r--r--qgroup.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/qgroup.c b/qgroup.c
index 11659e83..267cd7f1 100644
--- a/qgroup.c
+++ b/qgroup.c
@@ -1051,7 +1051,7 @@ static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup)
struct btrfs_qgroup_limit_item *limit;
u64 flags;
u64 qgroupid;
- u64 qgroupid1;
+ u64 child, parent;
memset(&args, 0, sizeof(args));
@@ -1119,14 +1119,14 @@ static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup)
qgroupid, limit);
break;
case BTRFS_QGROUP_RELATION_KEY:
- qgroupid = btrfs_search_header_offset(sh);
- qgroupid1 = btrfs_search_header_objectid(sh);
+ child = btrfs_search_header_offset(sh);
+ parent = btrfs_search_header_objectid(sh);
- if (qgroupid < qgroupid1)
+ if (parent <= child)
break;
ret = update_qgroup_relation(qgroup_lookup,
- qgroupid, qgroupid1);
+ child, parent);
break;
default:
return ret;