changeset 22460:18726a70209b

lib-storage: Try to get mailbox list index's permissions from its parent directory This avoids stat()ing the mail/index root directory, which is especially useful when mailbox list index is stored in tmpfs.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 24 Jul 2017 21:08:33 +0300
parents d802f801c8f9
children 618910705ddd
files src/lib-storage/list/mailbox-list-index.c
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-index.c	Mon Jul 24 21:07:44 2017 +0300
+++ b/src/lib-storage/list/mailbox-list-index.c	Mon Jul 24 21:08:33 2017 +0300
@@ -56,7 +56,6 @@
 {
 	struct mailbox_list_index *ilist = INDEX_LIST_CONTEXT(list);
 	const struct mail_storage_settings *set = list->mail_set;
-	struct mailbox_permissions perm;
 	enum mail_index_open_flags index_flags;
 	unsigned int lock_timeout;
 
@@ -77,10 +76,14 @@
 	lock_timeout = set->mail_max_lock_timeout == 0 ? UINT_MAX :
 		set->mail_max_lock_timeout;
 
-	mailbox_list_get_root_permissions(list, &perm);
-	mail_index_set_permissions(ilist->index, perm.file_create_mode,
-				   perm.file_create_gid,
-				   perm.file_create_gid_origin);
+	if (!mail_index_use_existing_permissions(ilist->index)) {
+		struct mailbox_permissions perm;
+
+		mailbox_list_get_root_permissions(list, &perm);
+		mail_index_set_permissions(ilist->index, perm.file_create_mode,
+					   perm.file_create_gid,
+					   perm.file_create_gid_origin);
+	}
 	mail_index_set_log_rotation(ilist->index,
 				    MAILBOX_LIST_INDEX_LOG_ROTATE_MIN_SIZE,
 				    MAILBOX_LIST_INDEX_LOG_ROTATE_MAX_SIZE,