dovecot-2.0: quota-fs/rquota: If soft limit is zero, fallback to...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jul 5 15:10:10 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/ec62342fa241
changeset: 11730:ec62342fa241
user: Timo Sirainen <tss at iki.fi>
date: Mon Jul 05 13:10:07 2010 +0100
description:
quota-fs/rquota: If soft limit is zero, fallback to returning hard limits.
diffstat:
src/plugins/quota/quota-fs.c | 53 ++++++++++++++------------
1 files changed, 29 insertions(+), 24 deletions(-)
diffs (77 lines):
diff -r 4f4096096364 -r ec62342fa241 src/plugins/quota/quota-fs.c
--- a/src/plugins/quota/quota-fs.c Mon Jul 05 13:01:10 2010 +0100
+++ b/src/plugins/quota/quota-fs.c Mon Jul 05 13:10:07 2010 +0100
@@ -321,6 +321,31 @@
}
#ifdef HAVE_RQUOTA
+static void
+rquota_get_result(const rquota *rq, bool bytes,
+ uint64_t *value_r, uint64_t *limit_r)
+{
+ /* use soft limits if they exist, fallback to hard limits */
+ if (bytes) {
+ /* convert the results from blocks to bytes */
+ *value_r = (uint64_t)rq->rq_curblocks *
+ (uint64_t)rq->rq_bsize;
+ if (rq->rq_bsoftlimit != 0) {
+ *limit_r = (uint64_t)rq->rq_bsoftlimit *
+ (uint64_t)rq->rq_bsize;
+ } else {
+ *limit_r = (uint64_t)rq->rq_bhardlimit *
+ (uint64_t)rq->rq_bsize;
+ }
+ } else {
+ *value_r = rq->rq_curfiles;
+ if (rq->rq_fsoftlimit != 0)
+ *limit_r = rq->rq_fsoftlimit;
+ else
+ *limit_r = rq->rq_fhardlimit;
+ }
+}
+
static int do_rquota_user(struct fs_quota_root *root, bool bytes,
uint64_t *value_r, uint64_t *limit_r)
{
@@ -390,18 +415,8 @@
switch (result.status) {
case Q_OK: {
- /* convert the results from blocks to bytes */
- const rquota *rq = &result.getquota_rslt_u.gqr_rquota;
-
- if (bytes) {
- *value_r = (uint64_t)rq->rq_curblocks *
- (uint64_t)rq->rq_bsize;
- *limit_r = (uint64_t)rq->rq_bsoftlimit *
- (uint64_t)rq->rq_bsize;
- } else {
- *value_r = rq->rq_curfiles;
- *limit_r = rq->rq_fsoftlimit;
- }
+ rquota_get_result(&result.getquota_rslt_u.gqr_rquota, bytes,
+ value_r, limit_r);
if (root->root.quota->set->debug) {
i_debug("quota-fs: uid=%s, value=%llu, limit=%llu",
dec2str(root->uid),
@@ -490,18 +505,8 @@
switch (result.status) {
case Q_OK: {
- /* convert the results from blocks to bytes */
- const rquota *rq = &result.getquota_rslt_u.gqr_rquota;
-
- if (bytes) {
- *value_r = (uint64_t)rq->rq_curblocks *
- (uint64_t)rq->rq_bsize;
- *limit_r = (uint64_t)rq->rq_bsoftlimit *
- (uint64_t)rq->rq_bsize;
- } else {
- *value_r = rq->rq_curfiles;
- *limit_r = rq->rq_fsoftlimit;
- }
+ rquota_get_result(&result.getquota_rslt_u.gqr_rquota, bytes,
+ value_r, limit_r);
if (root->root.quota->set->debug) {
i_debug("quota-fs: gid=%s, value=%llu, limit=%llu",
dec2str(root->gid),
More information about the dovecot-cvs
mailing list