From nobody Thu Feb 5 21:54:15 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f6WG54cXdz6RGqM for ; Thu, 05 Feb 2026 21:54:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f6WG44CtSz3SN5 for ; Thu, 05 Feb 2026 21:54:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770328460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hUUUZSW37XWOocxWVzNLeoXAgybLONq4udHDj0qGRss=; b=adA5BarUtex8OZdIJ9lVO3L1gy2PnFOcSuwe4nN4qWo029LlasdjFZqnRWduXkuOIUmNIR FtpZM/I2u+pd111aLo0RB4fBkNyeFluPGzy3ZdHAtetUvgQxOsQMy2rMC3/zoeQ9hakQpc Qn+JhZOXfI68JdY0/aBnQej3pHUA85hYxxSjfBDX//g7lTnom10jJ3qxsF6sSmwQAsmLh+ a+4kjJjsG7jJYhPPjU9ms6PIxiULjPQtZ+KRchyOE6ALk+jS+cZdezZ4v9k+jC5D/L4E6P Mr5GN4p7GJzgSTs3BiQBuWPM92HWGIoJZYnZWzzSiSLQbyRvS8h0aKdhDbaMvA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770328460; a=rsa-sha256; cv=none; b=X2MhvouLlCfAwigRQ3yVP0UjohgA4NyId1BuoUS4nlWSxkQe08SxtbpNv4PvSNOks3LON+ c5R4MVu/BQPq4LRtm71oqeFZREW8qR8Gvbot8nZqPNCnhJHMxn8/Adl3cxpis5ATQe/7GX G5HCILqSakLD2P8tpWLB7zdCu9lEY8DgeuOx/5jlz3vkFXEBvPcaYN+5VLSCcya/k36PMn nlwZb1lsloOb2jSQMoRY4fscxtASJWr9dKHcTtDnDvxYcfn3eohhTN22X5/nD7gM4euCLA /idX19esh2h7Fg29TLtbsjRVkAbjjKPF0T5JihSw1R3rOTbzDhfKJEa8uWvPZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770328460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hUUUZSW37XWOocxWVzNLeoXAgybLONq4udHDj0qGRss=; b=LRxF+ofkjTJJ6BgyzqslxYT6P0itVWtebgBnBmuGe6Xd9XYAEiZR1gYnaiI9/poNjv+1Pq 5nZU7SC4nk/I0WXYGv31447XFLPb295SA1pY1Zn7rx4GNlp0RsZ2MIl2DbHeY/k28ElqXo uLjL48nMdHpaM7PY2C9WWIA7lVatEcSjMFO8wnjYMk+ohoBaAVZ7w+KzkJzWIn2oEci5zr S79pWjjFBDibX073uGD8+1LSwAiwYNThexA49PwwPdo7iMibk9jejpwI6qxt7fOYNqm2MY X9kbFG2G1oYSzkXq5/b3JHvjm7RW4bFYXGJ3w7f+oSmcA2j5Lbwzg/yEGlrCWg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f6WFz3XlvznwX for ; Thu, 05 Feb 2026 21:54:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19900 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 05 Feb 2026 21:54:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Cheng Cui From: Marius Strobl Subject: git: a327d997f5a1 - stable/14 - siftr: flush pkt_nodes to the log file in batch List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a327d997f5a106d8ec2fe5255aaf63127bfe6a69 Auto-Submitted: auto-generated Date: Thu, 05 Feb 2026 21:54:15 +0000 Message-Id: <69851187.19900.7246bd28@gitrepo.freebsd.org> The branch stable/14 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=a327d997f5a106d8ec2fe5255aaf63127bfe6a69 commit a327d997f5a106d8ec2fe5255aaf63127bfe6a69 Author: Cheng Cui AuthorDate: 2023-07-25 13:53:55 +0000 Commit: Marius Strobl CommitDate: 2026-02-05 21:54:06 +0000 siftr: flush pkt_nodes to the log file in batch Reviewed by: rscheff, tuexen Differential Revision: https://reviews.freebsd.org/D41175 (cherry picked from commit fafb03ab4254ab0d3927bc8ec22e4ba432efdbeb) --- sys/netinet/siftr.c | 73 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c index 255714cec0b1..9709ced92fd6 100644 --- a/sys/netinet/siftr.c +++ b/sys/netinet/siftr.c @@ -372,12 +372,12 @@ siftr_new_hash_node(struct flow_info info, int dir, } } -static void -siftr_process_pkt(struct pkt_node * pkt_node) +static int +siftr_process_pkt(struct pkt_node * pkt_node, char *buf) { struct flow_hash_node *hash_node; struct listhead *counter_list; - struct ale *log_buf; + int ret_sz; if (pkt_node->flowid == 0) { panic("%s: flowid not available", __func__); @@ -387,7 +387,7 @@ siftr_process_pkt(struct pkt_node * pkt_node) hash_node = siftr_find_flow(counter_list, pkt_node->flowid); if (hash_node == NULL) { - return; + return 0; } else if (siftr_pkts_per_log > 1) { /* * Taking the remainder of the counter divided @@ -403,16 +403,11 @@ siftr_process_pkt(struct pkt_node * pkt_node) * we wrote a log message for this connection, return. */ if (hash_node->counter > 0) - return; + return 0; } - log_buf = alq_getn(siftr_alq, MAX_LOG_MSG_LEN, ALQ_WAITOK); - - if (log_buf == NULL) - return; /* Should only happen if the ALQ is shutting down. */ - /* Construct a log message. */ - log_buf->ae_bytesused = snprintf(log_buf->ae_data, MAX_LOG_MSG_LEN, + ret_sz = snprintf(buf, MAX_LOG_MSG_LEN, "%c,%jd.%06ld,%s,%hu,%s,%hu,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u," "%u,%u,%u,%u,%u,%u,%u,%u\n", direction[pkt_node->direction], @@ -444,7 +439,7 @@ siftr_process_pkt(struct pkt_node * pkt_node) pkt_node->flowid, pkt_node->flowtype); - alq_post_flags(siftr_alq, log_buf, 0); + return ret_sz; } static void @@ -454,6 +449,9 @@ siftr_pkt_manager_thread(void *arg) STAILQ_HEAD_INITIALIZER(tmp_pkt_queue); struct pkt_node *pkt_node, *pkt_node_temp; uint8_t draining; + struct ale *log_buf; + int ret_sz, cnt; + char *bufp; draining = 2; @@ -489,12 +487,51 @@ siftr_pkt_manager_thread(void *arg) */ mtx_unlock(&siftr_pkt_mgr_mtx); - /* Flush all pkt_nodes to the log file. */ - STAILQ_FOREACH_SAFE(pkt_node, &tmp_pkt_queue, nodes, - pkt_node_temp) { - siftr_process_pkt(pkt_node); - STAILQ_REMOVE_HEAD(&tmp_pkt_queue, nodes); - free(pkt_node, M_SIFTR_PKTNODE); +try_again: + pkt_node = STAILQ_FIRST(&tmp_pkt_queue); + if (pkt_node != NULL) { + if (STAILQ_NEXT(pkt_node, nodes) != NULL) { + cnt = 3; + } else { + cnt = 1; + } + + log_buf = alq_getn(siftr_alq, MAX_LOG_MSG_LEN * cnt, + ALQ_WAITOK); + + if (log_buf != NULL) { + log_buf->ae_bytesused = 0; + bufp = log_buf->ae_data; + } else { + /* + * Should only happen if the ALQ is shutting + * down. + */ + bufp = NULL; + } + + /* Flush all pkt_nodes to the log file. */ + STAILQ_FOREACH_SAFE(pkt_node, &tmp_pkt_queue, nodes, + pkt_node_temp) { + if (log_buf != NULL) { + ret_sz = siftr_process_pkt(pkt_node, + bufp); + bufp += ret_sz; + log_buf->ae_bytesused += ret_sz; + cnt--; + } + + STAILQ_REMOVE_HEAD(&tmp_pkt_queue, nodes); + free(pkt_node, M_SIFTR_PKTNODE); + + if (cnt <= 0 && !STAILQ_EMPTY(&tmp_pkt_queue)) { + alq_post_flags(siftr_alq, log_buf, 0); + goto try_again; + } + } + if (log_buf != NULL) { + alq_post_flags(siftr_alq, log_buf, 0); + } } KASSERT(STAILQ_EMPTY(&tmp_pkt_queue),