From nobody Mon Mar 27 19:45:02 2023 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 4Pljvf3B5mz41yjx; Mon, 27 Mar 2023 19:45:02 +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 4Pljvf2kCfz3G8C; Mon, 27 Mar 2023 19:45:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1679946302; 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=8B01Vksg/ZVfq5TDIEXLZaojuDUD0JwpI0jJGrMUHiQ=; b=BF2BP3Q9mtAcwevjdQUNribiU5HgM7hcWRV05TQDq7Olm3Bu3SJ0VsYCLMX9O0VmtWk7MW KGPk80oxFquQE+Ms0kQomru+Okm8pa8OAEbRndsW2uemJBvuviQfML5exuyLhdlFNUeH6n O9nCmfpnD+a8XY2EMtRSHtsFfs6SPDqgPSktT+VVSqfuoKu//tVbRJPHGkzPagAm7xrPIU zWVqD75rTig0tmx3V2CMcoPXQO1LaBHo0c+dQ9MarWrpLjmaspv3i+VThSSQ8VHtNxiwds 33eIhqe3/uO4xiiWPradDrPFG+aLSdi+O6HUq+QIUBqK6WwKkUauGRqzYdvekQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1679946302; 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=8B01Vksg/ZVfq5TDIEXLZaojuDUD0JwpI0jJGrMUHiQ=; b=xmrlEQ6e8do1NOCjIDylHu1OYTgZG5wSF3YcQ42lgF2aqz/ry6EmqUXTqQpxbWtEffPS8j c1VcUAl5MVQVMUIH3gI7IUTPIHnBYFIjXIWmipTlKvQ9X9TYyKCcsHjXTwfOtfM+aJnltE Koe8pgKWSC0OhnA1zIxOxAwNi9YNaOAyLO2SWHrjiWf9Hw/hbpBRv5cgUIhaT01Q8MV0ZM Pn82yBCZa0VpT1AwK2HyKo9/9+S63ljEMworJ6UREE7Z2rxBw1Zg0wJkSMB3erfANQ8Kox UBl9I+gITKzGxOLiQlfB2P2aEbxirMkzLVQrSnk++iPUgnb3hV2KZqRepNV6Vw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1679946302; a=rsa-sha256; cv=none; b=LPMCdkSlg6hql2TrBJScK1sDF2CVXl4w+BxLLbkHRWA7dsdo65svvL9g38BHK3iEtffdZf +ER7Fx2Jzux/5Ycul1rqgrOU9/Of07Dr5EDfMVQB7yGeDgcDiKN4jITZvWfPyS1QYr6/++ +4j5fu0t+sU0iddzSrIZ5sHY2bf493aZ6Xw98xr6UPHTrKrcriABCaOJn4+OyZUixqsrWB aJiQgILgIHUQprO63mInfmZdfHiS0Ex5M6+zfFM9OneqjHQo0APbvlo+dr4Z0Pdx27my5O 3TKJ7M3xVaj99JiFLEwB9vsqW+3BtbXyQKIiJKnwEKPWdP5130sHlXw33NoYaw== 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 4Pljvf1nVmzZwM; Mon, 27 Mar 2023 19:45:02 +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 32RJj2W4083615; Mon, 27 Mar 2023 19:45:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 32RJj2YV083614; Mon, 27 Mar 2023 19:45:02 GMT (envelope-from git) Date: Mon, 27 Mar 2023 19:45:02 GMT Message-Id: <202303271945.32RJj2YV083614@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 57dc6f5e200b - main - sesutil: fix "fault all" with zoned jbods 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/main X-Git-Reftype: branch X-Git-Commit: 57dc6f5e200b10d34ccb97ccc18d06b3f0b9b933 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=57dc6f5e200b10d34ccb97ccc18d06b3f0b9b933 commit 57dc6f5e200b10d34ccb97ccc18d06b3f0b9b933 Author: Alan Somers AuthorDate: 2023-03-10 17:47:08 +0000 Commit: Alan Somers CommitDate: 2023-03-27 19:43:35 +0000 sesutil: fix "fault all" with zoned jbods Some SAS JBODs support zoning. This feature allows individual SAS targets to be accessible by only some initiator ports. One application would be connecting two servers to the same JBOD, but they wouldn't be able to see each other's disks. A zoned JBOD should also prohibit initiators from accessing SES elements corresponding to inaccessible SAS targets. It reports that by setting the element's status code to 0x8 (No Access Allowed). The bug is that when doing "sesutil (fault|locate) all ...", sesutil will attempt a ENCIOC_SETELMSTAT ioctl for every single element, even the inaccessible ones. The enclosure will reject the command, the kernel will return EINVAL, and sesutil will exit. The solution is to check the element's status, and skip trying to set it if the status is 0x8. But if the user actually supplied a ses ID, then assume that he knows what he's doing and try to set it anyway. PR: 270093 MFC after: 1 week Sponsored by: Axcient Reviewed by: mav, trasz Differential Revision: https://reviews.freebsd.org/D39017 --- usr.sbin/sesutil/sesutil.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/usr.sbin/sesutil/sesutil.c b/usr.sbin/sesutil/sesutil.c index 22bd0127a484..9c546f8ba210 100644 --- a/usr.sbin/sesutil/sesutil.c +++ b/usr.sbin/sesutil/sesutil.c @@ -281,6 +281,16 @@ sesled(int argc, char **argv, bool setfault) char devnames[devnames_size]; if (all) { + encioc_elm_status_t es; + memset(&es, 0, sizeof(es)); + es.elm_idx = objp[j].elm_idx; + if (ioctl(fd, ENCIOC_GETELMSTAT, &es) < 0) { + close(fd); + xo_err(EXIT_FAILURE, + "ENCIOC_GETELMSTAT"); + } + if ((es.cstat[0] & 0xf) == SES_OBJSTAT_NOACCESS) + continue; do_led(fd, objp[j].elm_idx, objp[j].elm_type, onoff, setfault); continue;