From: Timo Sirainen Date: Wed, 9 Dec 2015 08:49:22 +0000 (+0200) Subject: quota-fs: Fixed getting NFS rquota when the quota was disabled. X-Git-Tag: 2.2.22.rc1~426 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=738bdc36e50f5acb829e8fbeed9b77afee0c6de0;p=thirdparty%2Fdovecot%2Fcore.git quota-fs: Fixed getting NFS rquota when the quota was disabled. --- diff --git a/src/plugins/quota/quota-fs.c b/src/plugins/quota/quota-fs.c index 4538a751f9..f1ee128409 100644 --- a/src/plugins/quota/quota-fs.c +++ b/src/plugins/quota/quota-fs.c @@ -316,6 +316,17 @@ fs_quota_root_get_resources(struct quota_root *_root) 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 @@ do_rquota_user(struct fs_quota_root *root, 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 @@ do_rquota_group(struct fs_quota_root *root ATTR_UNUSED, 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 @@ do_rquota_group(struct fs_quota_root *root ATTR_UNUSED, } #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 @@ fs_quota_get_resource(struct quota_root *_root, const char *name, #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