dovecot-2.2: quota-fs: Fixed getting NFS rquota when the quota w...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Dec 9 08:49:42 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/63706ee7f49e
changeset: 19494:63706ee7f49e
user: Timo Sirainen <tss at iki.fi>
date: Wed Dec 09 10:49:22 2015 +0200
description:
quota-fs: Fixed getting NFS rquota when the quota was disabled.
diffstat:
src/plugins/quota/quota-fs.c | 35 +++++++++++++++++++----------------
1 files changed, 19 insertions(+), 16 deletions(-)
diffs (73 lines):
diff -r 27ee6a472555 -r 63706ee7f49e src/plugins/quota/quota-fs.c
--- a/src/plugins/quota/quota-fs.c Tue Dec 08 15:47:28 2015 +0200
+++ b/src/plugins/quota/quota-fs.c Wed Dec 09 10:49:22 2015 +0200
@@ -316,6 +316,17 @@
return root->inode_per_mail ? resources_kb_messages : resources_kb;
}
+#if defined(FS_QUOTA_LINUX) || defined(FS_QUOTA_BSDAIX) || \
+ defined(FS_QUOTA_NETBSD) || defined(HAVE_RQUOTA)
+static void fs_quota_root_disable(struct fs_quota_root *root, bool group)
+{
+ if (group)
+ root->group_disabled = TRUE;
+ else
+ root->user_disabled = TRUE;
+}
+#endif
+
#ifdef HAVE_RQUOTA
static void
rquota_get_result(const rquota *rq,
@@ -430,7 +441,8 @@
i_debug("quota-fs: uid=%s, limit=unlimited",
dec2str(root->uid));
}
- return 1;
+ fs_quota_root_disable(root, FALSE);
+ return 0;
case Q_EPERM:
i_error("quota-fs: permission denied to rquota service");
return -1;
@@ -525,7 +537,8 @@
i_debug("quota-fs: gid=%s, limit=unlimited",
dec2str(root->gid));
}
- return 1;
+ fs_quota_root_disable(root, TRUE);
+ return 0;
case Q_EPERM:
i_error("quota-fs: permission denied to ext rquota service");
return -1;
@@ -541,17 +554,6 @@
}
#endif
-#if defined(FS_QUOTA_LINUX) || defined(FS_QUOTA_BSDAIX) || \
- defined(FS_QUOTA_NETBSD)
-static void fs_quota_root_disable(struct fs_quota_root *root, bool group)
-{
- if (group)
- root->group_disabled = TRUE;
- else
- root->user_disabled = TRUE;
-}
-#endif
-
#ifdef FS_QUOTA_LINUX
static int
fs_quota_get_linux(struct fs_quota_root *root, bool group,
@@ -869,9 +871,10 @@
#ifdef HAVE_RQUOTA
if (mount_type_is_nfs(root->mount)) {
T_BEGIN {
- ret = !root->user_disabled ?
- do_rquota_user(root, &bytes_value, &bytes_limit, &count_value, &count_limit) :
- do_rquota_group(root, &bytes_value, &bytes_limit, &count_value, &count_limit);
+ ret = root->user_disabled ? 0 :
+ do_rquota_user(root, &bytes_value, &bytes_limit, &count_value, &count_limit);
+ if (ret == 0 && !root->group_disabled)
+ ret = do_rquota_group(root, &bytes_value, &bytes_limit, &count_value, &count_limit);
} T_END;
} else
#endif
More information about the dovecot-cvs
mailing list