forked from Mirrors/btrfs-progs
btrfs-progs: qgroup: move btrfs_show_qgroups's error handler to __qgroup_search
We have to process the return value of BTRFS_IOC_TREE_SEARCH ioctl in advance, so that we can distinguish between the two case where quota is not enabled (ioctl return -ENOENT) and either parent qgroup or child qgroup does not exist (update_qgroup_relation return -ENOENT). Besides this, any error in this routine has been reported, so we don't need to report again in cmd_qgroup_show. Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>master
parent
82ee5aec23
commit
f0445b8a34
|
@ -399,10 +399,6 @@ static int cmd_qgroup_show(int argc, char **argv)
|
|||
qgroupid);
|
||||
}
|
||||
ret = btrfs_show_qgroups(fd, filter_set, comparer_set);
|
||||
if (ret == -ENOENT)
|
||||
error("can't list qgroups: quotas not enabled");
|
||||
else if (ret < 0)
|
||||
error("can't list qgroups: %s", strerror(-ret));
|
||||
close_file_or_dir(fd, dirstream);
|
||||
|
||||
out:
|
||||
|
|
14
qgroup.c
14
qgroup.c
|
@ -1065,8 +1065,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)
|
||||
|
|
Loading…
Reference in New Issue