may change these by reading the limits elsewhere (e.g. Maildir++,
FS quota) */
int64_t bytes_limit, count_limit;
+ /* 1 = quota root has resources and should be returned when iterating
+ quota roots, 0 = not, -1 = unknown. */
+ int resource_ret;
/* Module-specific contexts. See quota_module_id. */
ARRAY_DEFINE(quota_module_contexts, void);
const char *const *tmp;
root = root_set->backend->v.alloc();
+ root->resource_ret = -1;
root->pool = pool_alloconly_create("quota root", 512);
root->set = root_set;
root->quota = quota;
if (!quota_root_is_visible(roots[iter->i], iter->box, FALSE))
continue;
- ret = quota_get_resource(roots[iter->i], "",
- QUOTA_NAME_STORAGE_KILOBYTES,
- &value, &limit);
+ ret = roots[iter->i]->resource_ret;
+ if (ret == -1) {
+ ret = quota_get_resource(roots[iter->i], "",
+ QUOTA_NAME_STORAGE_KILOBYTES,
+ &value, &limit);
+ }
if (ret == 0) {
ret = quota_get_resource(roots[iter->i], "",
QUOTA_NAME_MESSAGES,
&value, &limit);
}
+ roots[iter->i]->resource_ret = ret;
if (ret > 0) {
root = roots[iter->i];
break;