Skip to content

Commit

Permalink
quota: Fix quota_vsizes=yes to work with all backends
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen authored and GitLab committed Jun 9, 2017
1 parent df3ba63 commit 27569c0
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/plugins/quota/quota.c
Expand Up @@ -1235,6 +1235,15 @@ void quota_transaction_rollback(struct quota_transaction_context **_ctx)
i_free(ctx);
}

static int quota_get_mail_size(struct quota_transaction_context *ctx,
struct mail *mail, uoff_t *size_r)
{
if (ctx->quota->set->vsizes)
return mail_get_virtual_size(mail, size_r);
else
return mail_get_physical_size(mail, size_r);
}

enum quota_alloc_result quota_try_alloc(struct quota_transaction_context *ctx,
struct mail *mail)
{
Expand All @@ -1246,7 +1255,7 @@ enum quota_alloc_result quota_try_alloc(struct quota_transaction_context *ctx,
if (ctx->no_quota_updates)
return QUOTA_ALLOC_RESULT_OK;

if (mail_get_physical_size(mail, &size) < 0) {
if (quota_get_mail_size(ctx, mail, &size) < 0) {
enum mail_error error;
const char *errstr = mailbox_get_last_internal_error(mail->box, &error);

Expand Down Expand Up @@ -1333,7 +1342,7 @@ void quota_alloc(struct quota_transaction_context *ctx, struct mail *mail)

if (ctx->auto_updating)
return;
if (mail_get_physical_size(mail, &size) == 0)
if (quota_get_mail_size(ctx, mail, &size) == 0)
ctx->bytes_used += size;

ctx->bytes_ceil = ctx->bytes_ceil2;
Expand All @@ -1346,7 +1355,7 @@ void quota_free(struct quota_transaction_context *ctx, struct mail *mail)

if (ctx->auto_updating)
return;
if (mail_get_physical_size(mail, &size) < 0)
if (quota_get_mail_size(ctx, mail, &size) < 0)
quota_recalculate(ctx, QUOTA_RECALCULATE_MISSING_FREES);
else
quota_free_bytes(ctx, size);
Expand Down

0 comments on commit 27569c0

Please sign in to comment.