From nobody Mon Apr 20 17:20:26 2026 X-Original-To: dev-commits-src-main@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 4fzsgv092nz6ZCbV for ; Mon, 20 Apr 2026 17:20:27 +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" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fzsgt38tzz3VP6 for ; Mon, 20 Apr 2026 17:20:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776705626; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iFOH/EeFU/l3N60OU+MxcuvgkGZCsWFRU+mcpbRS+vg=; b=hWzhubELvOJSc38OhGbZkpEWD+gamrUYXqzkJbscJFqw3L4ADpeHAKPA2e/Lr9hWTPBsft t2N1G2HZOrJeHsuWqZcBTjBlXdz3LiEq+IKIDP/qaEtJIQXEsueOCNS5OF6VAAKXDlDA6o OiGX/4fnXGM+EawqAIZ1Gf8Mjy2W6oRAPrwpEfnrTFF0T4MtNyY7n03M90IT8jfCq3QyGb bu2GYs0agaTgoWlucXYMOzd57z9S6iWyxRf4UMadhOcDq+62bDHAkwur1f8IDnJn8veDNs amRfBA8gYzedSRk/mUAUQQ+0jZ/FYiBR2VPh/56shcC/Ip0oiOjyes76wfF6+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776705626; a=rsa-sha256; cv=none; b=vylg51enxO4LlnSgb4GOldMv2ENKoHFmq70Kdvcgf+qcl24Vgj2P6GsGfCH6XiXIfu9pkp acYXNLI51r3oa5yOj2wGhn0C2Hp1dO8NiZefFqnP5tSVmc/J/WrNmw3aVQWYdphhZn/BVa bZM9RukVbhySljbUqWcoLrWElLKyMymS9lOdg6HBGMZYCDWeQzyyJWPc+jqbKH8MpRXXH7 77gZrYbcOoylvjtX8m0X/JN6I1s+SOeQTK+ScxJPWeyUuid+b1xvbTN0bEt1wTDhNToHZX KK318xf6EH5ivh/oM6SDBpB5tBeDssHiUFMoAyD/McYkkXC+Ig01AxpSYtnRlg== 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=1776705626; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iFOH/EeFU/l3N60OU+MxcuvgkGZCsWFRU+mcpbRS+vg=; b=RmfuyYhL/AuyBoZKVH10GYr7kVKRRprlQMAqgF2Ys7wU6iCMG+2HU//6HmY29YBbyyXhe6 BJrdW5n/sWACzk9LPeCo8zrDzCQXiCyltc3xaOFsX7ray67jcYGNQvlDzkkWBkqyTfAqA9 L9e1tvpfdC2TAv6LHffDqiWAVAzYlMLz6e8psVzn68cQkdCUemwLpJdbJMQL/9ziBRXaE7 bcn1dvlI9LaCfFpDOyeoEAbjjEl3B16JKBAtHHXxVttZsXP8qW0wMLEa36NiMqR75p3pZJ a2eaehHgmTHx7cr6bUeLp0KLcudw0SavHlUQOlz401UaYSNJ6panb9Yt3atVFg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fzsgt2VQxz15jS for ; Mon, 20 Apr 2026 17:20:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3efa2 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 20 Apr 2026 17:20:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 4b79ee8eb139 - main - ctld: Update nchildren directly in wait_for_children List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4b79ee8eb139696c1fe845d25a56439d02ab4131 Auto-Submitted: auto-generated Date: Mon, 20 Apr 2026 17:20:26 +0000 Message-Id: <69e6605a.3efa2.117819ab@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=4b79ee8eb139696c1fe845d25a56439d02ab4131 commit 4b79ee8eb139696c1fe845d25a56439d02ab4131 Author: John Baldwin AuthorDate: 2026-04-20 17:19:49 +0000 Commit: John Baldwin CommitDate: 2026-04-20 17:19:49 +0000 ctld: Update nchildren directly in wait_for_children This results in slightly less duplicated code. Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D56526 --- usr.sbin/ctld/ctld.cc | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 4ff8d30bb49f..b634debeafc8 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -2295,18 +2295,17 @@ start_timer(int timeout, bool fatal) log_err(1, "setitimer"); } -static int +static void wait_for_children(bool block) { pid_t pid; int status; - int num = 0; - for (;;) { - /* - * If "block" is true, wait for at least one process. - */ - if (block && num == 0) + /* + * If "block" is true, wait for at least one process. + */ + while (nchildren > 0) { + if (block) pid = wait4(-1, &status, 0, NULL); else pid = wait4(-1, &status, WNOHANG, NULL); @@ -2321,10 +2320,10 @@ wait_for_children(bool block) } else { log_debugx("child process %d terminated gracefully", pid); } - num++; - } + nchildren--; - return (num); + block = false; + } } static void @@ -2343,15 +2342,13 @@ handle_connection(struct portal *portal, freebsd::fd_up fd, if (dont_fork) { log_debugx("incoming connection; not forking due to -d flag"); } else { - nchildren -= wait_for_children(false); - assert(nchildren >= 0); + wait_for_children(false); while (conf->maxproc() > 0 && nchildren >= conf->maxproc()) { log_debugx("maxproc limit of %d child processes hit; " "waiting for child process to exit", conf->maxproc()); - nchildren -= wait_for_children(true); - assert(nchildren >= 0); + wait_for_children(true); } log_debugx("incoming connection; forking child process #%d", nchildren); @@ -2791,8 +2788,7 @@ main(int argc, char **argv) log_warnx("exiting on signal"); return (0); } else { - nchildren -= wait_for_children(false); - assert(nchildren >= 0); + wait_for_children(false); if (timed_out()) { newconf->isns_update(); }