From nobody Sat Jun 14 12:59:39 2025 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 4bKGZG05ZCz5MRPS; Sat, 14 Jun 2025 12:59:50 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com [IPv6:2607:f8b0:4864:20::832]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bKGZF4BJwz3SCn; Sat, 14 Jun 2025 12:59:49 +0000 (UTC) (envelope-from markjdb@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-qt1-x832.google.com with SMTP id d75a77b69052e-4a44e94f0b0so37436201cf.1; Sat, 14 Jun 2025 05:59:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749905983; x=1750510783; darn=freebsd.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:from:to:cc:subject:date:message-id :reply-to; bh=WGuVc1+ue+garrAKOEnSG+bKKApRE/alKUxlrHy5sXI=; b=Nbw7bNXNjhCchXaobpn9+3MYAJ3Y5Fz0Miil78AZhq43wVvgKpRdJdo8vFIEc14iOA lh3YSSd+KnN/+xTImYvpfo1BZpe7joAYkgMzsoqIf5OMc7LNxJKpsmwkUiwcY0kgGWve Ln4sWZVSWKp2McBH1CENbUdHnrDa81OxCILz3wxLG//f5NzamsVMqs0zKLWqfm217hMn FvgEdK5J9+ukl8elhiGqrHyYyk6EWrXpM7mNIz1/2Q+c+gFi3NwhaAYQ42lgedkMeUYP hf/i7W+WJlEp0mVPZU1vrpoqIusvu6fvjr0ZHNP5D7tu0Hiidx5gFsbYZYmCodjO1xqI I6ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749905983; x=1750510783; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WGuVc1+ue+garrAKOEnSG+bKKApRE/alKUxlrHy5sXI=; b=Y17tg3qnFPMBgL9Est+9A/BI1ZBCiRkpppa97UExuc+p4jdwvvOTcJC/iB9oCHciCW icoSp8zJS0j5aSgThEXjN1QqbicVkfW9TjjYbauQgGx+VCyWyrzQd5o+KLDXSiZb5M7A HGtAt2ZTWF2nJrDKJr/zEVab1xO+JQ2LYUNaDquoiIayrnCCiW9aB73wFnit1srxq9GM EtdLCuTVaIAx1bu1UsMb7wZqQOJo8B/Q7NBrArlvzfGcIPRsps+eT9+cBwJrm35Xunp+ 2fkCLwFWXBeeiZFhyc8OI3j7mohvywWXUmiA2wc4kZkUY1HzAb5u5HHueBAiB/perZkK NCPA== X-Forwarded-Encrypted: i=1; AJvYcCUJHvJ4WS/1saEjcS8Ofw2HEQBPvNYbMEI5PuirQN2m+IkpAOa917eB+UPqzX33Kou/zjpHvdGyLzAtHYIRHobu+ni/@freebsd.org, AJvYcCUanbqZrYRyLluB2pd9vDwGMgfOhN+us5wTcraXTVk5I+ruy2G3WMM9Va8iGYrTBFD4XvLMpnwVLDhlADEtBpg=@freebsd.org, AJvYcCWkt1fYrkMV+U5r+LXw6Y1VOIfO5XWlEkq5IZyhF5owB/WEpqZFeo5PDa8R0PAaOuobCGIoWd7AzeQfqd/P4iwhQBGQk+M=@freebsd.org X-Gm-Message-State: AOJu0YyqEvX4JbJ0toPUFJq4Gze1Oo/VC6KXRdKSgMCXNoFHAhG3oA1z RFGCybvwkzNFX9nXXneBZ4Y5pITkK8AQ991FUrkla3F/DgD1ulKpnMCYe/Eya6c/ X-Gm-Gg: ASbGnctTjgZUqzkp5ygLGgfVHo12KGoH3tfMiPcJMKoRmVKl1bZfkSg+QTqotdF+y7P g6EmLaSlHUr/iUJCfUQJGD+ut2V5unXu0yKo1tbbnZpjB8HFH8q2zSDFMtMxJCVTQtPM4dG0N9M czSfzl2aAtg56lL0D2cp/ra92qJbfrj3qduPw5OfcZNN0orJ7KTVGOM3byzH6jYnHa/YlD6ZwkD I1kovclucjoJSpEfenLKW53q9xyhSm7duOLY97+hdBupjC1uCzaaskw43ZCjpy5q6bXZiPBOh1K uFs0yGwGil3IO6hy5E+F9eEu/HtNmf3LZy9ww1Z9FZ2eJV5fIPsSgeEX0Uqs2Npnaw+FdC0zfh0 Q X-Google-Smtp-Source: AGHT+IFCWqthAN4Wpj6mR4+va9dZtPsIa86Kra8glueYtey8Ao48WlKXIWKPZjd0B+ohOtUXibBsRA== X-Received: by 2002:a05:622a:15ca:b0:494:959e:26a3 with SMTP id d75a77b69052e-4a73c5fc8f5mr48996271cf.34.1749905982529; Sat, 14 Jun 2025 05:59:42 -0700 (PDT) Received: from nuc (192-0-220-237.cpe.teksavvy.com. [192.0.220.237]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4a72a5201basm27755491cf.78.2025.06.14.05.59.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Jun 2025 05:59:42 -0700 (PDT) Date: Sat, 14 Jun 2025 08:59:39 -0400 From: Mark Johnston To: John Baldwin Cc: Konstantin Belousov , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 4e207e3849d4 - main - exterr: make SET_ERRORX() macros an expression evaluating to the errno Message-ID: References: <202506131940.55DJeTa1046740@gitrepo.freebsd.org> <0003a97e-60ed-4868-8844-0a0346bc97ee@FreeBSD.org> 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=us-ascii Content-Disposition: inline In-Reply-To: <0003a97e-60ed-4868-8844-0a0346bc97ee@FreeBSD.org> X-Rspamd-Queue-Id: 4bKGZF4BJwz3SCn X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] On Sat, Jun 14, 2025 at 08:50:54AM -0400, John Baldwin wrote: > On 6/13/25 15:40, Konstantin Belousov wrote: > > The branch main has been updated by kib: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=4e207e3849d47648ced17da16aad39355b99d9b2 > > > > commit 4e207e3849d47648ced17da16aad39355b99d9b2 > > Author: Konstantin Belousov > > AuthorDate: 2025-06-13 17:32:50 +0000 > > Commit: Konstantin Belousov > > CommitDate: 2025-06-13 19:39:55 +0000 > > > > exterr: make SET_ERRORX() macros an expression evaluating to the errno > > And move the actual td_kexterr fill code into the function, saving some > > text. > > Suggested and reviewed by: markj > > Sponsored by: The FreeBSD Foundation > > Differential revision: https://reviews.freebsd.org/D50836 > > --- > > sys/kern/sys_generic.c | 20 ++++++++++++++++++++ > > sys/sys/exterrvar.h | 22 +++++++--------------- > > 2 files changed, 27 insertions(+), 15 deletions(-) > > > > diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c > > index ec61d0bdc541..d31ff3b939cc 100644 > > --- a/sys/kern/sys_generic.c > > +++ b/sys/kern/sys_generic.c > > @@ -2281,3 +2281,23 @@ sys_exterrctl(struct thread *td, struct exterrctl_args *uap) > > return (EINVAL); > > } > > } > > + > > +int > > +exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1, > > + uintptr_t pp2, int line) > > +{ > > + struct thread *td; > > + > > + td = curthread; > > + if ((td->td_pflags2 & TDP2_UEXTERR) != 0) { > > + td->td_pflags2 |= TDP2_EXTERR; > > + td->td_kexterr.error = eerror; > > + td->td_kexterr.cat = category; > > + td->td_kexterr.msg = mmsg; > > + td->td_kexterr.p1 = pp1; > > + td->td_kexterr.p2 = pp2; > > + td->td_kexterr.src_line = line; > > + ktrexterr(td); > > + } > > + return (eerror); > > +} > > diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h > > index 4b168446e23b..d3c2c7c92d06 100644 > > --- a/sys/sys/exterrvar.h > > +++ b/sys/sys/exterrvar.h > > @@ -31,27 +31,19 @@ > > #endif > > #ifdef BLOAT_KERNEL_WITH_EXTERR > > -#define SET_ERROR_MSG(mmsg) _Td->td_kexterr.msg = mmsg > > +#define SET_ERROR_MSG(mmsg) (mmsg) > > #else > > -#define SET_ERROR_MSG(mmsg) _Td->td_kexterr.msg = NULL > > +#define SET_ERROR_MSG(mmsg) NULL > > #endif > > -#define SET_ERROR2(eerror, mmsg, pp1, pp2) do { \ > > - struct thread *_Td = curthread; \ > > - if ((_Td->td_pflags2 & TDP2_UEXTERR) != 0) { \ > > - _Td->td_pflags2 |= TDP2_EXTERR; \ > > - _Td->td_kexterr.error = eerror; \ > > - _Td->td_kexterr.cat = EXTERR_CATEGORY; \ > > - SET_ERROR_MSG(mmsg); \ > > - _Td->td_kexterr.p1 = (uintptr_t)pp1; \ > > - _Td->td_kexterr.p2 = (uintptr_t)pp2; \ > > - _Td->td_kexterr.src_line = __LINE__; \ > > - ktrexterr(_Td); \ > > - } \ > > -} while (0) > > +#define SET_ERROR2(eerror, mmsg, pp1, pp2) \ > > + exterr_set(eerror, EXTERR_CATEGORY, SET_ERROR_MSG(mmsg), \ > > + (uintptr_t)(pp1), (uintptr_t)(pp2), __LINE__) > > #define SET_ERROR0(eerror, mmsg) SET_ERROR2(eerror, mmsg, 0, 0) > > #define SET_ERROR1(eerror, mmsg, pp1) SET_ERROR2(eerror, mmsg, pp1, 0) > > +int exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1, > > + uintptr_t pp2, int line); > > int exterr_to_ue(struct thread *td, struct uexterror *ue); > > void ktrexterr(struct thread *td); > > BTW, you could have a single SET_ERROR(eerror, mmsg, ...) wrapper around SET_ERRORx > following what is done for CTR() (vs CTRx()). Note that this would collide with an OpenZFS macro of the same name (which exists to make it easy to insert dtrace probes into error paths). If your suggestion is implemented, then it would be sensible to use a different name to avoid collisions, maybe SET_EXTERROR() or just EXTERROR().