Hello,

Is there any reason why dovecot relies on S= instead of real disk size email 
takes?

1) compressed mails take less than than the S= specified
2) we could avoid using "S=" for the lookups and count every file there, 
including indexes and mails without S=... if we'd read filesizes

Eample:
# ls -l '1567026317.M331058P4751.testing.server.com,S=3086,W=3148:2,S'
-rw------- 1 dev mail 1274 Aug 29 00:05 
1567026317.M331058P4751.testing.server.com,S=3086,W=3148:2,S

Proposed patch (solves #1, not sure about your opinion on #2):
--- src/plugins/quota/quota-maildir.c.orig      2020-02-05 19:21:08.582998417 
-0700
+++ src/plugins/quota/quota-maildir.c   2020-02-05 19:21:22.184998798 -0700
@@ -84,7 +84,7 @@
 
                p = strstr(dp->d_name, ",S=");
                num = (uoff_t)-1;
-               if (p != NULL) {
+               if (0 && p != NULL) {
                        /* ,S=nnnn[:,] */
                        p += 3;
                        for (num = 0; *p >= '0' && *p <= '9'; p++)
@@ -104,7 +104,7 @@
                        str_truncate(path, len);
                        str_append(path, dp->d_name);
                        if (stat(str_c(path), &st) == 0) {
-                               *total_bytes += st.st_size;
+                               *total_bytes += st.st_blocks * 512;
                                *total_count += 1;
                        } else if (errno != ENOENT && errno != ESTALE) {
                                *error_r = t_strdup_printf(

Thank you!

--
Best regards,
Martynas Bendorius


Reply via email to