Skip to content
Snippets Groups Projects
Commit 5d0aa029 authored by Libor Peltan's avatar Libor Peltan
Browse files

kjournalprint: open LMDB completely RDONLY

parent 4036bcff
No related branches found
No related tags found
1 merge request!1130kjournalprint: open LMDB completely RDONLY
Pipeline #63090 passed
......@@ -30,9 +30,10 @@ typedef struct {
#define JOURNAL_HEADER_SIZE (32)
/*! \brief Convert journal_mode to LMDB environment flags. */
inline static unsigned journal_env_flags(int journal_mode)
inline static unsigned journal_env_flags(int journal_mode, bool readonly)
{
return journal_mode == JOURNAL_MODE_ASYNC ? (MDB_WRITEMAP | MDB_MAPASYNC) : 0;
return (journal_mode == JOURNAL_MODE_ASYNC ? (MDB_WRITEMAP | MDB_MAPASYNC) : 0) |
(readonly ? MDB_RDONLY : 0);
}
/*!
......
......@@ -517,7 +517,7 @@ int server_init(server_t *server, int bg_workers)
char *journal_dir = conf_db(conf(), C_JOURNAL_DB);
conf_val_t journal_size = conf_db_param(conf(), C_JOURNAL_DB_MAX_SIZE, C_MAX_JOURNAL_DB_SIZE);
conf_val_t journal_mode = conf_db_param(conf(), C_JOURNAL_DB_MODE, C_JOURNAL_DB_MODE);
knot_lmdb_init(&server->journaldb, journal_dir, conf_int(&journal_size), journal_env_flags(conf_opt(&journal_mode)), NULL);
knot_lmdb_init(&server->journaldb, journal_dir, conf_int(&journal_size), journal_env_flags(conf_opt(&journal_mode), false), NULL);
free(journal_dir);
kasp_db_ensure_init(&server->kaspdb, conf());
......@@ -930,7 +930,7 @@ static int reconfigure_journal_db(conf_t *conf, server_t *server)
conf_val_t journal_size = conf_db_param(conf, C_JOURNAL_DB_MAX_SIZE, C_MAX_JOURNAL_DB_SIZE);
conf_val_t journal_mode = conf_db_param(conf, C_JOURNAL_DB_MODE, C_JOURNAL_DB_MODE);
int ret = knot_lmdb_reinit(&server->journaldb, journal_dir, conf_int(&journal_size),
journal_env_flags(conf_opt(&journal_mode)));
journal_env_flags(conf_opt(&journal_mode), false));
if (ret != KNOT_EOK) {
log_warning("ignored reconfiguration of journal DB (%s)", knot_strerror(ret));
}
......
......@@ -165,7 +165,7 @@ int print_journal(char *path, knot_dname_t *name, print_params_t *params)
bool exists;
uint64_t occupied, occupied_all;
knot_lmdb_init(&jdb, path, 0, journal_env_flags(JOURNAL_MODE_ROBUST), NULL);
knot_lmdb_init(&jdb, path, 0, journal_env_flags(JOURNAL_MODE_ROBUST, true), NULL);
if (!knot_lmdb_exists(&jdb)) {
knot_lmdb_deinit(&jdb);
return KNOT_EFILE;
......@@ -251,7 +251,7 @@ static int list_zone(const knot_dname_t *zone, bool detailed, knot_lmdb_db_t *jd
int list_zones(char *path, bool detailed)
{
knot_lmdb_db_t jdb = { 0 };
knot_lmdb_init(&jdb, path, 0, journal_env_flags(JOURNAL_MODE_ROBUST), NULL);
knot_lmdb_init(&jdb, path, 0, journal_env_flags(JOURNAL_MODE_ROBUST, true), NULL);
list_t zones;
init_list(&zones);
......
......@@ -262,7 +262,7 @@ static bool test_continuity(list_t *l)
static void test_journal_db(void)
{
env_flag = journal_env_flags(JOURNAL_MODE_ASYNC);
env_flag = journal_env_flags(JOURNAL_MODE_ASYNC, false);
knot_lmdb_init(&jdb, test_dir_name, 2048 * 1024, env_flag, NULL);
int ret = knot_lmdb_open(&jdb);
......@@ -634,7 +634,7 @@ static void test_stress_base(const knot_dname_t *apex,
uint32_t serial = 0;
ret = knot_lmdb_reconfigure(&jdb, test_dir_name, file_size, journal_env_flags(JOURNAL_MODE_ASYNC));
ret = knot_lmdb_reconfigure(&jdb, test_dir_name, file_size, journal_env_flags(JOURNAL_MODE_ASYNC, false));
is_int(KNOT_EOK, ret, "journal: recofigure to mapsize %zu (%s)", file_size, knot_strerror(ret));
set_conf(1000, file_size / 2, apex);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment