From 6777c7243e72d032ffbb74532a45dec32969b27d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 6 Mar 2025 23:07:04 +0100 Subject: [PATCH] fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! EXP: Lock-free QPzone --- lib/dns/qpzone.c | 6 ++++-- lib/dns/rdataslab.c | 6 +----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index 5ef9ae634b..279e1a180f 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -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); } diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c index 8d9f001a76..7ec8348ae2 100644 --- a/lib/dns/rdataslab.c +++ b/lib/dns/rdataslab.c @@ -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