aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-05 18:58:13 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-05 18:58:13 +0100
commit763ab77075df986497e7b6937d33d5f487ba7fc6 (patch)
treec00911e4f77c7910e0e7f36432c5c97fabb35dc9
parent18a45837c555962fc16e21da6755707e48518893 (diff)
downloadrspamd-763ab77075df986497e7b6937d33d5f487ba7fc6.tar.gz
rspamd-763ab77075df986497e7b6937d33d5f487ba7fc6.zip
Enable mmap in sqlite3.
-rw-r--r--src/libserver/fuzzy_backend.c10
-rw-r--r--src/libutil/sqlite_utils.c10
2 files changed, 18 insertions, 2 deletions
diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c
index 3d4bb6c23..af6eb193d 100644
--- a/src/libserver/fuzzy_backend.c
+++ b/src/libserver/fuzzy_backend.c
@@ -415,7 +415,8 @@ rspamd_fuzzy_backend_open (const gchar *path, GError **err)
static const char sqlite_wal[] = "PRAGMA journal_mode=\"wal\";",
fallback_journal[] = "PRAGMA journal_mode=\"off\";",
foreign_keys[] = "PRAGMA foreign_keys=\"ON\";",
- secure_delete[] = "PRAGMA secure_delete=\"OFF\";";
+ secure_delete[] = "PRAGMA secure_delete=\"OFF\";",
+ enable_mmap[] = "PRAGMA mmap_size=268435456;";
gint rc;
if (path == NULL) {
@@ -485,6 +486,13 @@ rspamd_fuzzy_backend_open (const gchar *path, GError **err)
sqlite3_errmsg (backend->db));
}
+ if (sizeof (gpointer) >= 8 &&
+ (rc = sqlite3_exec (backend->db, enable_mmap, NULL, NULL, NULL)) !=
+ SQLITE_OK) {
+ msg_warn_fuzzy_backend ("cannot enable mmap: %s",
+ sqlite3_errmsg (backend->db));
+ }
+
rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_VACUUM, backend, NULL);
if (rspamd_fuzzy_backend_run_stmt (backend, RSPAMD_FUZZY_BACKEND_COUNT)
diff --git a/src/libutil/sqlite_utils.c b/src/libutil/sqlite_utils.c
index d677a0dc2..980d07abc 100644
--- a/src/libutil/sqlite_utils.c
+++ b/src/libutil/sqlite_utils.c
@@ -250,7 +250,8 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
static const char sqlite_wal[] = "PRAGMA journal_mode=\"wal\";",
exclusive_lock_sql[] = "PRAGMA locking_mode=\"exclusive\";",
fsync_sql[] = "PRAGMA synchronous=1;",
- foreign_keys[] = "PRAGMA foreign_keys=\"ON\";";
+ foreign_keys[] = "PRAGMA foreign_keys=\"ON\";",
+ enable_mmap[] = "PRAGMA mmap_size=268435456;";
gboolean create = FALSE, has_lock = FALSE;
flags = SQLITE_OPEN_READWRITE;
@@ -384,6 +385,13 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
sqlite3_errmsg (sqlite));
}
+ if (sizeof (gpointer) >= 8 &&
+ (rc = sqlite3_exec (sqlite, enable_mmap, NULL, NULL, NULL)) !=
+ SQLITE_OK) {
+ msg_warn_pool ("cannot enable mmap: %s",
+ sqlite3_errmsg (sqlite));
+ }
+
if (has_lock) {
msg_debug_pool ("removing lock from %s", lock_path);
rspamd_file_unlock (lock_fd, FALSE);