From fac115a3a452dc1aebdb4a64d425af4e7318a671 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 20 Jan 2015 22:44:06 +0000 Subject: [PATCH] Restore statfile resize logic. --- src/libstat/backends/mmaped_file.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libstat/backends/mmaped_file.c b/src/libstat/backends/mmaped_file.c index 2769bba8a..43baaa67c 100644 --- a/src/libstat/backends/mmaped_file.c +++ b/src/libstat/backends/mmaped_file.c @@ -338,6 +338,18 @@ rspamd_mmaped_file_open (rspamd_mmaped_file_ctx * pool, } rspamd_mempool_lock_mutex (pool->lock); + if (!forced && + labs (size - st.st_size) > (long)sizeof (struct stat_file) * 2 + && size > sizeof (struct stat_file)) { + rspamd_mempool_unlock_mutex (pool->lock); + msg_warn ("need to reindex statfile old size: %Hz, new size: %Hz", + (size_t)st.st_size, size); + return rspamd_mmaped_file_reindex (pool, filename, st.st_size, size); + } + else if (size < sizeof (struct stat_file)) { + msg_err ("requested to shrink statfile to %Hz but it is too small", + size); + } new_file = g_slice_alloc0 (sizeof (rspamd_mmaped_file_t)); if ((new_file->fd = open (filename, O_RDWR)) == -1) { -- 2.39.5