From c744a20b8605f81251f14945f97f832c8306920a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 18 Feb 2015 15:14:08 +0000 Subject: Invalidate learned files to update their content. --- src/libstat/backends/backends.h | 3 +++ src/libstat/backends/mmaped_file.c | 11 +++++++++++ 2 files changed, 14 insertions(+) (limited to 'src/libstat/backends') diff --git a/src/libstat/backends/backends.h b/src/libstat/backends/backends.h index f8a2af72c..e775faf6e 100644 --- a/src/libstat/backends/backends.h +++ b/src/libstat/backends/backends.h @@ -48,6 +48,7 @@ struct rspamd_stat_backend { gboolean (*learn_token)(struct token_node_s *tok, struct rspamd_token_result *res, gpointer ctx); gulong (*total_learns)(struct rspamd_statfile_runtime *runtime, gpointer ctx); + void (*finalize_learn)(struct rspamd_statfile_runtime *runtime, gpointer ctx); gulong (*inc_learns)(struct rspamd_statfile_runtime *runtime, gpointer ctx); gulong (*dec_learns)(struct rspamd_statfile_runtime *runtime, gpointer ctx); ucl_object_t* (*get_stat)(struct rspamd_statfile_runtime *runtime, gpointer ctx); @@ -63,6 +64,8 @@ gboolean rspamd_mmaped_file_process_token (struct token_node_s *tok, gboolean rspamd_mmaped_file_learn_token (struct token_node_s *tok, struct rspamd_token_result *res, gpointer ctx); +void rspamd_mmaped_file_finalize_learn (struct rspamd_statfile_runtime *runtime, + gpointer ctx); gulong rspamd_mmaped_file_total_learns (struct rspamd_statfile_runtime *runtime, gpointer ctx); gulong rspamd_mmaped_file_inc_learns (struct rspamd_statfile_runtime *runtime, diff --git a/src/libstat/backends/mmaped_file.c b/src/libstat/backends/mmaped_file.c index 02ea17c28..2e5709149 100644 --- a/src/libstat/backends/mmaped_file.c +++ b/src/libstat/backends/mmaped_file.c @@ -1037,3 +1037,14 @@ rspamd_mmaped_file_get_stat (struct rspamd_statfile_runtime *runtime, return res; } + +void +rspamd_mmaped_file_finalize_learn (struct rspamd_statfile_runtime *runtime, + gpointer ctx) +{ + rspamd_mmaped_file_t *mf = (rspamd_mmaped_file_t *)runtime; + + if (mf != NULL) { + msync (mf->map, mf->len, MS_INVALIDATE | MS_ASYNC); + } +} -- cgit v1.2.3