From nobody Wed Nov 23 20:56:25 2022 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 4NHYMF6lNbz4jHxp; Wed, 23 Nov 2022 20:56:25 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NHYMF6GCSz3wxY; Wed, 23 Nov 2022 20:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669236985; 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=bmeWTbBJqbAartGi/XGppbNeo+sxiOuR5jJyj1HX6ik=; b=T+g1P5kPOK474gqWx7cImCiBrxogc7t+uG+65rVll8jee215JNbjVjHE4ADNBGbzO2pyh7 y3Bl7+tbkEeiIR64HUxOL6KCyMNu2i3jchfQz/fwrkkZdxUipoOirFtjH26bExQUTg82MV Lp+u2I9fut/q2ez0OBnPeqeMIENnI81KfJLxS2DD0TSTWQ7KY+Z+jnPGqoHUyvsp+K9aQm OO9ooGAmy4JIalxgJbarD+VhBdqTNsgbGvbVe3iOdV34OAr7WtfS+gn4JH4i1ztxOTzhEV 7B6/gSUR1EyRVMJv2zyKsL2iBCvT7RHjs/N0S7LfCdP2NqLwIYMHL2CQZBBh2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669236985; 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=bmeWTbBJqbAartGi/XGppbNeo+sxiOuR5jJyj1HX6ik=; b=vogiuvN8ez4ogMoQ4Kj4CN51AIBavLR4dBKrwtDZVW5BRPwuGbjY2XGAUv9KcNIdybh+Q8 OHvHSSXq/b1K4u41xptUIF4kEm8ugANOCfhQagi5g4dkihXcAu6Pyaq9EfFQkC6O5yFRo6 q9u49Qf0LWxA2XCIHK2x8GjNupWSOfJPxLjLYrcGoaCj1U1iRmg3JYsM7X9bLN2axGEj/T MUHGnDbH4il+DM9WuIs6GuljKt9/TRujngmPEMfM5smnrBrsS3r2PFKzBGV5SRPEDsKcZE MPQgONMX0oRyGVAwHv1SZhJfxfQQF/b1TpxPUtGcFJU3Z4xQ/3I9QUKdAzMjjg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1669236985; a=rsa-sha256; cv=none; b=XA+DvCC+0BY052myRJ8j81OGKsgGXQoCsXzehmWfEu5OE3CGKM4LViTDFJaT4RDRaY8Ckm zZOnmG4fXwv0Ww59DcQ0JUiouAwSxDYlFvK/CNajkPyhwOy5RXO6SFHQa2KeH0NK6yROCa OB6rpbxIh0S4T+55ErTON9/+kgOKVDUBcq8rhu2nXZFgCp74O3KN6kgdyJN4BX48vxSRX7 fdl/ZXiEsPAGGy0x1dnYsMsL77277szzc4w7XydpJC4n30LVVpb9iNzP6AtRUupbFmZ6Ip aPZiRZx6BA9CO8+P/Q7+ACbFkgLJdD2oplspjedpmqeAvm9GR5M8zarwCVElKA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NHYMF5HSNzbWY; Wed, 23 Nov 2022 20:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2ANKuP1u066033; Wed, 23 Nov 2022 20:56:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2ANKuP5L066032; Wed, 23 Nov 2022 20:56:25 GMT (envelope-from git) Date: Wed, 23 Nov 2022 20:56:25 GMT Message-Id: <202211232056.2ANKuP5L066032@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 896282a37f5a - stable/13 - ctld: if adding a target fails, retry it on the next reload 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 896282a37f5aff6dfdae4b02fc34cd4ef98dd7c6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=896282a37f5aff6dfdae4b02fc34cd4ef98dd7c6 commit 896282a37f5aff6dfdae4b02fc34cd4ef98dd7c6 Author: Alan Somers AuthorDate: 2022-10-12 22:44:09 +0000 Commit: Alan Somers CommitDate: 2022-11-23 20:55:41 +0000 ctld: if adding a target fails, retry it on the next reload If the admin creates more CTL ports than kern.cam.ctl.max_ports, then adding some will fail. If he then removes some ports and does "service ctld reload", he would expect that the new ports would get added in the newly-freed port space. But they don't, because ctld assigned them port numbers during their first creation attempts. Fix this bug by removing newly created ports from ctld's internal list if the kernel rejects them for any reason. That way, a subsequent config reload will attempt to add them again, possibly with new port numbers. Sponsored by: Axcient Reviewed by: jhb, mav Differential Revision: https://reviews.freebsd.org/D36974 (cherry picked from commit 15b3e3bb7efcbf7c29ab76e9ea7990c17df790e6) --- usr.sbin/ctld/ctld.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.c index 3f4bca632512..7ee381de08a7 100644 --- a/usr.sbin/ctld/ctld.c +++ b/usr.sbin/ctld/ctld.c @@ -2113,7 +2113,7 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* * Now add new ports or modify existing ones. */ - TAILQ_FOREACH(newport, &newconf->conf_ports, p_next) { + TAILQ_FOREACH_SAFE(newport, &newconf->conf_ports, p_next, tmpport) { if (port_is_dummy(newport)) continue; oldport = port_find(oldconf, newport->p_name); @@ -2130,6 +2130,8 @@ conf_apply(struct conf *oldconf, struct conf *newconf) log_warnx("failed to %s port %s", (oldport == NULL) ? "add" : "update", newport->p_name); + if (oldport == NULL || port_is_dummy(oldport)) + port_delete(newport); /* * XXX: Uncomment after fixing the root cause. *