From: Timo Sirainen Date: Mon, 24 Jul 2017 18:08:33 +0000 (+0300) Subject: lib-storage: Try to get mailbox list index's permissions from its parent directory X-Git-Tag: 2.3.0.rc1~1217 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=992511e0cfdb592fd60ab93ebfe8f0a19ab37cb1;p=thirdparty%2Fdovecot%2Fcore.git 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. --- diff --git a/src/lib-storage/list/mailbox-list-index.c b/src/lib-storage/list/mailbox-list-index.c index 2a6908c1fd..87432f652d 100644 --- a/src/lib-storage/list/mailbox-list-index.c +++ b/src/lib-storage/list/mailbox-list-index.c @@ -56,7 +56,6 @@ int mailbox_list_index_index_open(struct mailbox_list *list) { 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 @@ int mailbox_list_index_index_open(struct mailbox_list *list) 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,