diff --git a/src/knot/conf/conf.h b/src/knot/conf/conf.h index 7921335cd89b2dadc31455588fe603d6ea13aa26..3712e4b6b4dac8645f1e02b063a97815ae69d1d0 100644 --- a/src/knot/conf/conf.h +++ b/src/knot/conf/conf.h @@ -325,22 +325,6 @@ static inline conf_t* conf() { return s_config; // Inline for performance reasons. } -/*! - * \brief Lock configuration for reading. - * - * \return Configuration context. - */ -static inline void conf_read_lock() { - rcu_read_lock(); -} - -/*! - * \brief Unlock configuration for reading. - */ -static inline void conf_read_unlock() { - rcu_read_unlock(); -} - /* * Utilities. */ diff --git a/src/knot/ctl/knotc_main.c b/src/knot/ctl/knotc_main.c index 628baa71e91fe50a23d817b31ef1c309281fa399..7f063af50e27b75b146777cf2ce1c3eee64bee01 100644 --- a/src/knot/ctl/knotc_main.c +++ b/src/knot/ctl/knotc_main.c @@ -330,7 +330,7 @@ int execute(const char *action, char **argv, int argc, pid_t pid, } // Lock configuration - conf_read_lock(); + rcu_read_lock(); // Prepare command const char *cfg = conf()->filename; @@ -344,7 +344,7 @@ int execute(const char *action, char **argv, int argc, pid_t pid, }; // Unlock configuration - conf_read_unlock(); + rcu_read_unlock(); // Execute command if (has_flag(flags, F_INTERACTIVE)) { @@ -525,7 +525,7 @@ int execute(const char *action, char **argv, int argc, pid_t pid, valid_cmd = 1; // Lock configuration - conf_read_lock(); + rcu_read_lock(); // Generate databases for all zones node *n = 0; @@ -615,7 +615,7 @@ int execute(const char *action, char **argv, int argc, pid_t pid, free(tasks); // Unlock configuration - conf_read_unlock(); + rcu_read_unlock(); } if (!valid_cmd) { log_server_error("Invalid command: '%s'\n", action); diff --git a/src/knot/ctl/process.c b/src/knot/ctl/process.c index 8e748caad5b66ac148456998a5ee2146f5874dad..d3fa2fc5b75a77be513811530f82cd889cd83a96 100644 --- a/src/knot/ctl/process.c +++ b/src/knot/ctl/process.c @@ -32,7 +32,7 @@ char* pid_filename() { - conf_read_lock(); + rcu_read_lock(); /* Read configuration. */ char* ret = 0; @@ -40,7 +40,7 @@ char* pid_filename() ret = strdup(conf()->pidfile); } - conf_read_unlock(); + rcu_read_unlock(); return ret; } diff --git a/src/knot/main.c b/src/knot/main.c index 4bedba538e40c632993c46df86d3a96d1d6dbe17..4723380f9f3a7a71e15eb5af37955fdf326f07e6 100644 --- a/src/knot/main.c +++ b/src/knot/main.c @@ -160,10 +160,10 @@ int main(int argc, char **argv) server_t *server = server_create(); // Initialize configuration - conf_read_lock(); + rcu_read_lock(); conf_add_hook(conf(), CONF_LOG, log_conf_hook, 0); conf_add_hook(conf(), CONF_ALL, server_conf_hook, server); - conf_read_unlock(); + rcu_read_unlock(); // Find implicit configuration file if (!config_fn) { diff --git a/src/knot/server/server.c b/src/knot/server/server.c index 5df7fe1fae06deb50f20b5df8dc76c7945d2fdba..4d01801cd5a3ed3aa46304bbc8cb70d016cd00ea 100644 --- a/src/knot/server/server.c +++ b/src/knot/server/server.c @@ -217,7 +217,7 @@ static int server_bind_sockets(server_t *server) */ /* Lock configuration. */ - conf_read_lock(); + rcu_read_lock(); /* Prepare helper lists. */ int bound = 0; @@ -288,7 +288,7 @@ static int server_bind_sockets(server_t *server) } /* Unlock configuration. */ - conf_read_unlock(); + rcu_read_unlock(); /* Publish new list. */ list* oldlist = rcu_xchg_pointer(&server->ifaces, newlist); @@ -329,7 +329,7 @@ static int server_bind_handlers(server_t *server) } /* Lock config. */ - conf_read_lock(); + rcu_read_lock(); /* Estimate number of threads/manager. */ int thr_count = 0; @@ -386,7 +386,7 @@ static int server_bind_handlers(server_t *server) } /* Unlock config. */ - conf_read_unlock(); + rcu_read_unlock(); return KNOTD_EOK; } @@ -550,7 +550,7 @@ int server_start(server_t *server) xfr_start(server->xfr_h); /* Lock configuration. */ - conf_read_lock(); + rcu_read_lock(); // Start dispatchers int ret = KNOTD_EOK; @@ -571,7 +571,7 @@ int server_start(server_t *server) } /* Unlock configuration. */ - conf_read_unlock(); + rcu_read_unlock(); dbg_server("server: server started\n"); diff --git a/src/knot/server/xfr-handler.c b/src/knot/server/xfr-handler.c index 39ffeebac14f2600d957c2d9df5331155b917ec5..f44181be958abd9c4258b905b548e07213cefe16 100644 --- a/src/knot/server/xfr-handler.c +++ b/src/knot/server/xfr-handler.c @@ -1021,7 +1021,7 @@ static int xfr_update_msgpref(knot_ns_xfr_t *req, const char *keytag) return KNOTD_EINVAL; } - conf_read_lock(); + rcu_read_lock(); char r_addr[SOCKADDR_STRLEN]; char *r_key = NULL; int r_port = sockaddr_portnum(&req->addr); @@ -1053,7 +1053,7 @@ static int xfr_update_msgpref(knot_ns_xfr_t *req, const char *keytag) zonedata_t *zd = (zonedata_t *)knot_zone_data(req->zone); if (zd == NULL) { free(r_key); - conf_read_unlock(); + rcu_read_unlock(); return KNOTD_EINVAL; } else { zname = zd->conf->name; @@ -1099,7 +1099,7 @@ static int xfr_update_msgpref(knot_ns_xfr_t *req, const char *keytag) req->msgpref = msg; } - conf_read_unlock(); + rcu_read_unlock(); free(r_key); return KNOTD_EOK; } @@ -1434,13 +1434,13 @@ static int xfr_process_request(xfrworker_t *w, uint8_t *buf, size_t buflen) zd = (zonedata_t *)knot_zone_data(xfr.zone); } - conf_read_lock(); + rcu_read_lock(); /* Check if the zone is not discarded. */ if (knot_zone_flags(xfr.zone) & KNOT_ZONE_DISCARDED) { xfr_request_deinit(&xfr); knot_zone_release(xfr.zone); - conf_read_unlock(); + rcu_read_unlock(); return KNOTD_EOK; } @@ -1494,7 +1494,7 @@ static int xfr_process_request(xfrworker_t *w, uint8_t *buf, size_t buflen) break; } - conf_read_unlock(); + rcu_read_unlock(); /* Deinitialize (it is already registered, or discarded). * Right now, this only frees temporary msgpref. diff --git a/src/knot/server/zones.c b/src/knot/server/zones.c index 8a1896a5b78e823cd2ca9d39550dc93e4c9d9f85..a0ae6025a5d4eca1eded646aa4e37df6cc8e95f7 100644 --- a/src/knot/server/zones.c +++ b/src/knot/server/zones.c @@ -767,7 +767,7 @@ static int zones_zonefile_sync_ev(event_t *e) int ret = zones_zonefile_sync(zone, j); journal_release(j); - conf_read_lock(); + rcu_read_lock(); if (ret == KNOTD_EOK) { log_zone_info("Applied differences of '%s' to zonefile.\n", zd->conf->name); @@ -776,14 +776,14 @@ static int zones_zonefile_sync_ev(event_t *e) "to zonefile.\n", zd->conf->name); } - conf_read_unlock(); + rcu_read_unlock(); /* Reschedule. */ - conf_read_lock(); + rcu_read_lock(); evsched_schedule(e->parent, e, zd->conf->dbsync_timeout * 1000); dbg_zones("zones: next IXFR database SYNC of '%s' in %d seconds\n", zd->conf->name, zd->conf->dbsync_timeout); - conf_read_unlock(); + rcu_read_unlock(); return ret; } @@ -1163,10 +1163,10 @@ static int zones_load_changesets(const knot_zone_t *zone, return KNOTD_EINVAL; } - conf_read_lock(); + rcu_read_lock(); dbg_xfr("xfr: loading changesets for zone '%s' from serial %u to %u\n", zd->conf->name, from, to); - conf_read_unlock(); + rcu_read_unlock(); /* Retain journal for changeset loading. */ journal_t *j = journal_retain(zd->ixfr_db); @@ -2097,7 +2097,7 @@ int zones_zonefile_sync(knot_zone_t *zone, journal_t *journal) if (zd->zonefile_serial != serial_to) { /* Save zone to zonefile. */ - conf_read_lock(); + rcu_read_lock(); dbg_zones("zones: syncing '%s' differences to '%s' " "(SOA serial %u)\n", zd->conf->name, zd->conf->file, serial_to); @@ -2109,7 +2109,7 @@ int zones_zonefile_sync(knot_zone_t *zone, journal_t *journal) rcu_read_unlock(); return ret; } - conf_read_unlock(); + rcu_read_unlock(); /* Update journal entries. */ dbg_zones_verb("zones: unmarking all dirty nodes " @@ -3080,10 +3080,10 @@ static int zones_store_changeset(const knot_changeset_t *chs, journal_t *j, /* Reschedule sync timer. */ if (tmr) { /* Fetch sync timeout. */ - conf_read_lock(); + rcu_read_lock(); int timeout = zd->conf->dbsync_timeout; timeout *= 1000; /* Convert to ms. */ - conf_read_unlock(); + rcu_read_unlock(); /* Reschedule. */ dbg_xfr_verb("xfr: resuming SYNC " @@ -3363,7 +3363,7 @@ int zones_timers_update(knot_zone_t *zone, conf_zone_t *cfzone, evsched_t *sch) pthread_mutex_unlock(&zd->lock); /* Check XFR/IN master server. */ - conf_read_lock(); + rcu_read_lock(); if (zd->xfr_in.master.ptr) { /* Schedule REFRESH timer. */ @@ -3381,7 +3381,7 @@ int zones_timers_update(knot_zone_t *zone, conf_zone_t *cfzone, evsched_t *sch) /* Do not issue NOTIFY queries if stub. */ if (!knot_zone_contents(zone)) { - conf_read_unlock(); + rcu_read_unlock(); return KNOTD_EOK; } @@ -3439,7 +3439,7 @@ int zones_timers_update(knot_zone_t *zone, conf_zone_t *cfzone, evsched_t *sch) tmr_s, cfg_if->address, cfg_if->port); } - conf_read_unlock(); + rcu_read_unlock(); return KNOTD_EOK; } diff --git a/src/tests/xfr_tests.c b/src/tests/xfr_tests.c index 4732888ec955ed2ee69e2687060946a57eca6dca..b78678be938793564c0f17fba6190bb7df45f8ea 100644 --- a/src/tests/xfr_tests.c +++ b/src/tests/xfr_tests.c @@ -172,11 +172,11 @@ int main(int argc, char **argv) server_t *server = server_create(); // Initialize configuration - conf_read_lock(); + rcu_read_lock(); conf_add_hook(conf(), CONF_LOG, log_conf_hook, 0); conf_add_hook(conf(), CONF_LOG, zones_ns_conf_hook, server->nameserver); conf_add_hook(conf(), CONF_LOG, server_conf_hook, server); - conf_read_unlock(); + rcu_read_unlock(); // Find implicit configuration file if (!config_fn) {