1 // SPDX-License-Identifier: CDDL-1.0 2 /* 3 * This file and its contents are supplied under the terms of the 4 * Common Development and Distribution License ("CDDL"), version 1.0. 5 * You may only use this file in accordance with the terms of version 6 * 1.0 of the CDDL. 7 * 8 * A full copy of the text of the CDDL should have accompanied this 9 * source. A copy of the CDDL is also available via the Internet at 10 * https://opensource.org/license/CDDL-1.0. 11 */ 12 13 /* 14 * Copyright (c) 2026, TrueNAS. 15 */ 16 17 #ifndef _ZFS_WORKQUEUE_COMPAT_H 18 #define _ZFS_WORKQUEUE_COMPAT_H 19 20 /* 21 * Forcibly flush the kernel's "delayed work" workqueue. 22 */ 23 #ifdef HAVE_FLUSH_DELAY_WORKQUEUE_INTERNAL 24 /* 25 * Linux 5.19: flush_workqueue() on system workqueues is a compile error, use 26 * __flush_workqueue() instead. 27 */ 28 #ifdef HAVE_FLUSH_DELAY_WORKQUEUE_PERCPU 29 /* 30 * Linux 6.17: system_percpu_wq introduced as direct replacement for system_wq, 31 * and takes over as the delay workqueue. 32 */ 33 #define zpl_flush_delay_workqueue() __flush_workqueue(system_percpu_wq) 34 #else 35 #define zpl_flush_delay_workqueue() __flush_workqueue(system_wq) 36 #endif 37 #else 38 #define zpl_flush_delay_workqueue() flush_workqueue(system_wq) 39 #endif 40 41 #endif 42