From nobody Mon Jul 28 13:31:25 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 4brKBQ5pSdz634qd; Mon, 28 Jul 2025 13:31:26 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4brKBQ1qgBz3tpb; Mon, 28 Jul 2025 13:31:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753709486; 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=kVOrFPA9YLW5GSRmu+awRkVKRiR/tQfv1OO+TM301dw=; b=WjNJCL4fSWXYD43UbVJ01ijPU6Iwuv7dBP6nBUG2q4ErPIoellyK306CDWgdKHtrUt/Fr4 HJALtmXOMuCh2UmTTss42r4q8RCK+CRfS1zo+2rC3sQXRhut83+GMjSDUxR4Rm7KHTqin6 M30B9mmU5NtQ2R/5+AUpR/PKkJWD8agyrYjqy9dP2ljUdxEXJa/DRRdTv2EFLd9bqHCxZ5 0K0fmM6YbbC1WFqMpdOB1lNH+/G+gfv0FTPZuTC62Tpi58OfjXA8rfw8SuoVh0G7e0vyUB abQAVwwtIL70BQrlJ0LGxVHNE2cGKsGr7c4EsKqjy4lS/mNRjSrqol9wA3FI5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753709486; 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=kVOrFPA9YLW5GSRmu+awRkVKRiR/tQfv1OO+TM301dw=; b=v1/tliLJKlvnKXqCeeILWG7idbzg9eoYVsYvy2belIP9g9g8J2qkYYKJX0a49NzNQYmA2a /5WPbbzIx6HdSMM9mFuiRzShXbZ1Lcut5+tT/gLmYRtGT2rK7Kpz/671akaK0ifc5upp6Q Xv3AbiQDYphOfcJcmQav/Ca7WQoiSi6NKBPrc+qDyaVQQWDuG2Pis6Sx88yzZWg3oAwLEg 6dF8rp/argoSMljE50V8bGlVGlhiestuNMbkcjIFV1/3eq2mJ8zaQTSyQ6MCbwbdzvdPJo jszfm8VH5/WSXHNU53ZFW+WmilSiEWEt+qcb27mcGIAWr8PJGSLN9AWre7DHFg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753709486; a=rsa-sha256; cv=none; b=SpPC1UQ3QP88VZsGG69J9blMgKHVeyZMPieU5R4Ez2e6FNgr71oWGBLesFsrqNsOdCJvsx l3eBDz/rHPbZzuQkmU/7LjohStO7gl3e08L98fPN2XSGG231OCCkBYm2Xvv+NHp02oSK47 WuRs+ugr83KmrMO2odJHzxlWz/U9Kjrfx5VqDWpw+LD7YNMSn0od9OJMI+3BtYVNNrXGjm leDrm5soBZBJ2Vry3NHWtD8aKA/FV0fFGSSfxSB7Noo3Zi1OEXm/kmQjzczwTaE3girQYF U/KIqo8fL+HXqGRc61nyO5UPDEqV8Y/NaNjQLWuf+Ti90MNBC+/APlssh/Y0aQ== 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 4brKBQ0kfXznJW; Mon, 28 Jul 2025 13:31:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56SDVQxK080432; Mon, 28 Jul 2025 13:31:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56SDVPhw080429; Mon, 28 Jul 2025 13:31:25 GMT (envelope-from git) Date: Mon, 28 Jul 2025 13:31:25 GMT Message-Id: <202507281331.56SDVPhw080429@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: c6a65bbee695 - stable/14 - zfs: spa: ZIO_TASKQ_ISSUE: Use symbolic priority 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: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c6a65bbee6959f50fa9313c63f31ff6e815b48d4 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=c6a65bbee6959f50fa9313c63f31ff6e815b48d4 commit c6a65bbee6959f50fa9313c63f31ff6e815b48d4 Author: Olivier Certner AuthorDate: 2024-05-21 14:23:32 +0000 Commit: Olivier Certner CommitDate: 2025-07-28 13:28:21 +0000 zfs: spa: ZIO_TASKQ_ISSUE: Use symbolic priority This allows to change the meaning of priority differences in FreeBSD without requiring code changes in ZFS. MFC after: 1 month Event: Kitchener-Waterloo Hackathon 202506 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D45390 (cherry picked from commit fd141584cf89d7d24543ef5be83c6927a5d67ffa) --- .../openzfs/include/os/freebsd/spl/sys/proc.h | 4 +++- .../openzfs/include/os/linux/spl/sys/sysmacros.h | 4 +++- sys/contrib/openzfs/include/sys/zfs_context.h | 4 +++- sys/contrib/openzfs/module/zfs/spa.c | 21 +++------------------ 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/proc.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/proc.h index 96ba10e5679e..0d02a826870c 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/proc.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/proc.h @@ -44,7 +44,9 @@ #ifdef _KERNEL #define CPU curcpu #define minclsyspri PRIBIO -#define defclsyspri minclsyspri +#define defclsyspri minclsyspri +/* Write issue taskq priority. */ +#define wtqclsyspri ((PVM + PRIBIO) / 2) #define maxclsyspri PVM #define max_ncpus (mp_maxid + 1) #define boot_max_ncpus (mp_maxid + 1) diff --git a/sys/contrib/openzfs/include/os/linux/spl/sys/sysmacros.h b/sys/contrib/openzfs/include/os/linux/spl/sys/sysmacros.h index 0e8390736309..96bb01e81541 100644 --- a/sys/contrib/openzfs/include/os/linux/spl/sys/sysmacros.h +++ b/sys/contrib/openzfs/include/os/linux/spl/sys/sysmacros.h @@ -91,8 +91,10 @@ * Treat shim tasks as SCHED_NORMAL tasks */ #define minclsyspri (MAX_PRIO-1) -#define maxclsyspri (MAX_RT_PRIO) #define defclsyspri (DEFAULT_PRIO) +/* Write issue taskq priority. */ +#define wtqclsyspri (MAX_RT_PRIO + 1) +#define maxclsyspri (MAX_RT_PRIO) #ifndef NICE_TO_PRIO #define NICE_TO_PRIO(nice) (MAX_RT_PRIO + (nice) + 20) diff --git a/sys/contrib/openzfs/include/sys/zfs_context.h b/sys/contrib/openzfs/include/sys/zfs_context.h index 5dedb14c7fb5..accfa3d9da9f 100644 --- a/sys/contrib/openzfs/include/sys/zfs_context.h +++ b/sys/contrib/openzfs/include/sys/zfs_context.h @@ -620,8 +620,10 @@ extern void delay(clock_t ticks); * Process priorities as defined by setpriority(2) and getpriority(2). */ #define minclsyspri 19 -#define maxclsyspri -20 #define defclsyspri 0 +/* Write issue taskq priority. */ +#define wtqclsyspri -19 +#define maxclsyspri -20 #define CPU_SEQID ((uintptr_t)pthread_self() & (max_ncpus - 1)) #define CPU_SEQID_UNSTABLE CPU_SEQID diff --git a/sys/contrib/openzfs/module/zfs/spa.c b/sys/contrib/openzfs/module/zfs/spa.c index 886867b739f0..b140f55af973 100644 --- a/sys/contrib/openzfs/module/zfs/spa.c +++ b/sys/contrib/openzfs/module/zfs/spa.c @@ -1114,29 +1114,14 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) tq = taskq_create_sysdc(name, value, 50, INT_MAX, spa->spa_proc, zio_taskq_basedc, flags); } else { - pri_t pri = maxclsyspri; /* * The write issue taskq can be extremely CPU * intensive. Run it at slightly less important * priority than the other taskqs. - * - * Under Linux and FreeBSD this means incrementing - * the priority value as opposed to platforms like - * illumos where it should be decremented. - * - * On FreeBSD, if priorities divided by four (RQ_PPQ) - * are equal then a difference between them is - * insignificant. */ - if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) { -#if defined(__linux__) - pri++; -#elif defined(__FreeBSD__) - pri += 4; -#else -#error "unknown OS" -#endif - } + const pri_t pri = (t == ZIO_TYPE_WRITE && + q == ZIO_TASKQ_ISSUE) ? + wtqclsyspri : maxclsyspri; tq = taskq_create_proc(name, value, pri, 50, INT_MAX, spa->spa_proc, flags); }