From: Stephan Bosch Date: Tue, 13 Nov 2018 21:03:46 +0000 (+0100) Subject: quota: Make quota_root_is_over() suitable for calculations involving moving/replacing... X-Git-Tag: 2.4.1~132 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=55bc5ff1f2a6cde8c96316bcc413aa64bc001fb9;p=thirdparty%2Fdovecot%2Fcore.git quota: Make quota_root_is_over() suitable for calculations involving moving/replacing messages --- diff --git a/src/plugins/quota/quota-private.h b/src/plugins/quota/quota-private.h index 9f7a857556..40b57aafdc 100644 --- a/src/plugins/quota/quota-private.h +++ b/src/plugins/quota/quota-private.h @@ -190,6 +190,7 @@ bool quota_transaction_is_over(struct quota_transaction_context *ctx, uoff_t siz bool quota_root_is_over(struct quota_transaction_context *ctx, struct quota_transaction_root_context *root, uoff_t count_alloc, uoff_t bytes_alloc, + uoff_t count_expunged, uoff_t bytes_expunged, uoff_t *count_overrun_r, uoff_t *bytes_overrun_r); void quota_transaction_root_expunged( diff --git a/src/plugins/quota/quota-util.c b/src/plugins/quota/quota-util.c index 46dc0825c3..5f9e311c75 100644 --- a/src/plugins/quota/quota-util.c +++ b/src/plugins/quota/quota-util.c @@ -163,6 +163,7 @@ bool quota_transaction_is_over(struct quota_transaction_context *ctx, bool quota_root_is_over(struct quota_transaction_context *ctx, struct quota_transaction_root_context *root, uoff_t count_alloc, uoff_t bytes_alloc, + uoff_t count_expunged, uoff_t bytes_expunged, uoff_t *count_overrun_r, uoff_t *bytes_overrun_r) { int64_t count_used = ctx->count_used; @@ -173,6 +174,8 @@ bool quota_root_is_over(struct quota_transaction_context *ctx, quota_used_apply_expunged(&count_used, root->count_expunged); quota_used_apply_expunged(&bytes_used, root->bytes_expunged); + quota_used_apply_expunged(&count_used, count_expunged); + quota_used_apply_expunged(&bytes_used, bytes_expunged); return (quota_is_over(count_alloc, count_used, root->count_ceil, root->count_over, diff --git a/src/plugins/quota/quota.c b/src/plugins/quota/quota.c index 219d6e2473..94b4186afc 100644 --- a/src/plugins/quota/quota.c +++ b/src/plugins/quota/quota.c @@ -1247,7 +1247,7 @@ quota_default_test_alloc(struct quota_transaction_context *ctx, uoff_t size, } i_zero(&overrun); - if (quota_root_is_over(ctx, &ctx->roots[i], 1, size, + if (quota_root_is_over(ctx, &ctx->roots[i], 1, size, 0, 0, &overrun.resource.count, &overrun.resource.bytes)) { overrun.root = roots[i];