release RCU in dns_qpmulti_snapshot()

previously, an RCU critical section was held open for the duration
of a snapshot. this should not be necessary, as the snapshot makes
local copies of QP trie metadata, and it causes problems when a
DB iterator is held open between two loop events.  we now call
rcu_read_unlock() after setting up the snapshot.
This commit is contained in:
Evan Hunt
2023-11-28 15:05:55 -08:00
parent ab13ba2438
commit 2222728a4f

View File

@@ -1391,6 +1391,8 @@ dns_qpmulti_snapshot(dns_qpmulti_t *multi, dns_qpsnap_t **qpsp) {
*qpsp = qps;
UNLOCK(&multi->mutex);
rcu_read_unlock();
}
void
@@ -1417,8 +1419,6 @@ dns_qpsnap_destroy(dns_qpmulti_t *multi, dns_qpsnap_t **qpsp) {
*qpsp = NULL;
UNLOCK(&multi->mutex);
rcu_read_unlock();
}
/***********************************************************************