fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! EXP: Lock-free QPzone

This commit is contained in:
Ondřej Surý
2025-03-06 23:07:04 +01:00
parent 538caa9a57
commit 6777c7243e
2 changed files with 5 additions and 7 deletions

View File

@@ -1349,6 +1349,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp,
dns_slabheaderlist_t resigned_list;
dns_slabheader_t *header = NULL;
uint32_t serial;
bool rollback = false;
REQUIRE(VALID_QPZONE(qpdb));
version = (qpz_version_t *)*versionp;
@@ -1381,6 +1382,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp,
cleanup_version = rollbackversion(
qpdb, version, &cleanup_list,
&resigned_list DNS__DB_FLARG_PASS);
rollback = true;
}
} else {
if (version != qpdb->current_version) {
@@ -1413,7 +1415,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp,
{
ISC_LIST_UNLINK(resigned_list, header, link);
if (version->writer && !commit) {
if (rollback) {
resigninsert(qpdb, header);
}
qpznode_release(qpdb, HEADERNODE(header) DNS__DB_FLARG_PASS);
@@ -1425,7 +1427,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp,
next_changed = ISC_LIST_NEXT(changed, link);
node = changed->node;
if (version->writer && !commit) {
if (rollback) {
rollback_node(node, serial);
}

View File

@@ -912,11 +912,7 @@ dns_slabheader_destroy(dns_slabheader_t **headerp) {
/* FIXME: bleh, this is so ugly */
isc_mem_attach(mctx, &header->mctx);
if (rcu_read_ongoing()) {
call_rcu(&header->rcu_head, dns__slabheader_destroy_rcu);
} else {
dns__slabheader_destroy_rcu(&header->rcu_head);
}
call_rcu(&header->rcu_head, dns__slabheader_destroy_rcu);
}
void