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) {