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:
parent
17afc8f27b
commit
12ee6186dc
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user