1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-22 22:03:43 +03:00

btrfs: when querying quota, make sure we don't choke if quota is disabled

When quota is disabled there's no quota tree on the fs, which results in
the SEARCH ioctl to return ENOENT. Handle this nicely: treat this the
same way as the case where the quota tree is around but doesn't carry
the searched for fields.
This commit is contained in:
Lennart Poettering 2015-11-10 21:37:49 +01:00
parent 17afc8f27b
commit 12ee6186dc

View File

@ -575,8 +575,12 @@ int btrfs_qgroup_get_quota_fd(int fd, uint64_t qgroupid, BtrfsQuotaInfo *ret) {
unsigned i;
args.key.nr_items = 256;
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) < 0)
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) < 0) {
if (errno == ENOENT) /* quota tree is missing: quota disabled */
break;
return -errno;
}
if (args.key.nr_items <= 0)
break;
@ -1335,8 +1339,12 @@ int btrfs_qgroup_copy_limits(int fd, uint64_t old_qgroupid, uint64_t new_qgroupi
unsigned i;
args.key.nr_items = 256;
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) < 0)
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) < 0) {
if (errno == ENOENT) /* quota tree missing: quota is not enabled, hence nothing to copy */
break;
return -errno;
}
if (args.key.nr_items <= 0)
break;
@ -1766,8 +1774,12 @@ int btrfs_qgroup_find_parents(int fd, uint64_t qgroupid, uint64_t **ret) {
unsigned i;
args.key.nr_items = 256;
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) < 0)
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) < 0) {
if (errno == ENOENT) /* quota tree missing: quota is disabled */
break;
return -errno;
}
if (args.key.nr_items <= 0)
break;